SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Format Angka dengan Koma di SQLite

SQLite memiliki printf() fungsi atau format() fungsi yang memungkinkan kita untuk memformat angka menurut format string.

Mulai dari SQLite 3.18.0, ia menerima tanda koma, yang memungkinkan kita untuk memiliki pemisah koma pada tanda ribuan untuk bilangan bulat.

Pekerjaan lebih lanjut dapat dilakukan untuk membuatnya bekerja dengan bilangan real/floating point.

Contoh

Berikut ini contoh pemformatan bilangan bulat dengan koma sebagai pemisah ribuan:

SELECT printf("%,d", 123456789);

Hasil:

123,456,789

String format "%,d" adalah apa yang ditentukan hasil ini.

Bilangan Real/Floating Point

Solusi di atas hanya berfungsi saat mengembalikan nomor tanpa bagian pecahannya.

Mari kita terapkan string format itu ke bilangan real:

SELECT printf("%,d", 1234567.4567);

Hasil:

1,234,567

Kami masih mendapatkan koma sebagai pemisah grup, karena string format kami tidak menyertakan bagian pecahan.

Berikut cara mengembalikan bagian pecahan:

SELECT printf("%.2f", 1234567.4567);

Hasil:

1234567.46

Di sini, format string "%.2f" menentukan bahwa hasilnya harus mencakup dua tempat desimal. Kita bisa menggunakan "%.3f" untuk tiga tempat desimal, dan seterusnya.

Anda mungkin berasumsi bahwa kami dapat melakukan hal berikut:

SELECT printf("%,d.2f", 1234567.4567);

Hasil:

1,234,567.2f

Tapi itu jelas tidak berhasil.

SQLite tidak memberi kami kemampuan pemformatan ekstensif untuk angka. Pemformatan angka bisa sangat rumit, dan biasanya lebih baik menerapkan pemformatan di tingkat aplikasi.

Yang mengatakan, jika Anda benar-benar perlu melakukan ini di SQLite, Anda dapat mencoba memformat bagian integer dengan koma, lalu menggabungkannya dengan bagian desimal.

Misalnya, kita memiliki kolom database bernama price , yang mengembalikan hasil berikut:

SELECT price FROM Products;

Hasil:

5457.99   
1238999.99
11.357    
3.49      
3.0001    
1234567.89
1499.5    
9.49      
149  

Kita bisa melakukan sesuatu di sepanjang baris berikut untuk memformat semua angka itu dengan pemisah ribuan dan titik desimal:

SELECT
    printf("%,d", price) 
    || 
    substr(
    printf("%.2f", price), 
    instr(printf("%.2f", price), "."), 
    length(printf("%.2f", price)) - instr(printf("%.2f", price), ".") + 1
    )
FROM Products;

Hasil:

5,457.99                                                                                                                                                                                     
1,238,999.99                                                                                                                                                                                 
11.36                                                                                                                                                                                        
3.49                                                                                                                                                                                         
3.00                                                                                                                                                                                         
1,234,567.89                                                                                                                                                                                 
1,499.50                                                                                                                                                                                     
9.49                                                                                                                                                                                         
149.00   

format() Fungsi

SQLite 3.38.0 (dirilis 22 Feb 2022) berganti nama menjadi printf() berfungsi untuk format() . printf() asli nama dipertahankan sebagai alias untuk kompatibilitas mundur.

Oleh karena itu, contoh pertama pada halaman ini dapat diubah sebagai berikut:

SELECT format("%,d", 123456789);

Hasil:

123,456,789

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus Kueri Dan Segarkan di ListView di Android (sqlite)

  2. tidak dapat menyalin database menggunakan kelas SQLiteAssetHelper

  3. Kapan saya harus menutup kursor dan db?

  4. SQLite CROSS JOIN dengan Contoh Praktis

  5. SQLite JSON_OBJECT()