SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Formatuj liczby z przecinkiem w SQLite

SQLite ma funkcję printf() funkcja lub format() funkcja, która pozwala nam formatować liczby zgodnie z ciągiem formatującym.

Począwszy od SQLite 3.18.0, akceptuje flagę przecinka, która umożliwia nam stosowanie separatorów przecinków w tysiącach znaków dla liczb całkowitych.

Można wykonać dalszą pracę, aby działała z liczbami rzeczywistymi/zmiennoprzecinkowymi.

Przykład

Oto przykład formatowania liczby całkowitej z przecinkiem jako separatorem tysięcy:

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

Wynik:

123 456 789

Ciąg formatu "%,d" jest tym, co zadecydowało o tym wyniku.

Liczby rzeczywiste/zmiennoprzecinkowe

Powyższe rozwiązanie działa tylko podczas zwracania liczby bez jej części ułamkowej.

Zastosujmy ten ciąg formatujący do liczby rzeczywistej:

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

Wynik:

1234 567

Nadal otrzymujemy przecinki jako separatory grup, ponieważ nasz ciąg formatu nie zawiera części ułamkowej.

Oto jak zwrócić część ułamkową:

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

Wynik:

1234567.46

Tutaj ciąg formatu "%.2f" określa, że ​​wynik powinien zawierać dwa miejsca po przecinku. Moglibyśmy użyć "%.3f" dla trzech miejsc po przecinku i tak dalej.

Możesz założyć, że możemy wykonać następujące czynności:

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

Wynik:

1234567.2f

Ale to najwyraźniej nie zadziałało.

SQLite nie zapewnia nam rozbudowanych możliwości formatowania liczb. Formatowanie liczb może być dość skomplikowane i zwykle lepiej jest zastosować formatowanie na poziomie aplikacji.

To powiedziawszy, jeśli naprawdę musisz to zrobić w SQLite, możesz spróbować sformatować część całkowitą za pomocą przecinków, a następnie połączyć ją z częścią dziesiętną.

Załóżmy na przykład, że mamy kolumnę bazy danych o nazwie price , który zwraca następujący wynik:

SELECT price FROM Products; 

Wynik:

5457,99 1238999.9911.357 3,49 3.0001 1234567.891499.5 9,49 149 

Moglibyśmy zrobić coś w następujących wierszach, aby sformatować wszystkie te liczby za pomocą separatora tysięcy i kropka dziesiętna:

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

Wynik:

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() Funkcja

SQLite 3.38.0 (wydany 22 lutego 2022) zmienił nazwę printf() funkcja do format() . Oryginalny printf() nazwa jest zachowywana jako alias dla wstecznej kompatybilności.

Dlatego pierwszy przykład na tej stronie można zmienić w następujący sposób:

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

Wynik:

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. 5 sposobów na zaimplementowanie wyszukiwania bez rozróżniania wielkości liter w SQLite z pełną obsługą Unicode

  2. Jak uruchomić zapytanie SQLite asynchronicznie w wątku w tle?

  3. Android Studio nie sprawdza/podświetla zapytań Kotlin Room DAO, gdy ciąg zajmuje więcej niż 1 wiersz

  4. Jak wybrać dane między dwiema datami z sqlite db w formacie dd-mm-rrrr?

  5. usuń bazę danych sqlite podczas aktualizacji nowej wersji aplikacji