sql >> Database teknologi >  >> RDS >> SQLite

Formater tal med komma i SQLite

SQLite har en printf() funktion eller format() funktion, der giver os mulighed for at formatere tal i henhold til en formatstreng.

Fra og med SQLite 3.18.0 accepterer den et kommaflag, som gør det muligt for os at have kommaseparatorer ved de tusinde mark for heltal.

Der kan arbejdes yderligere for at få det til at fungere med reelle/floating point-tal.

Eksempel

Her er et eksempel på formatering af et heltal med et komma som tusinde-separator:

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

Resultat:

123,456,789

Formatstrengen "%,d" er det, der har bestemt dette resultat.

Reelle tal/flydende kommatal

Ovenstående løsning virker kun, når nummeret returneres uden dets brøkdel.

Lad os anvende den formatstreng til et reelt tal:

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

Resultat:

1,234,567

Vi får stadig kommaer som gruppeseparatorer, fordi vores formatstreng ikke inkluderer brøkdelen.

Sådan returnerer du brøkdelen:

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

Resultat:

1234567.46

Her er formatstrengen "%.2f" angiver, at resultatet skal indeholde to decimaler. Vi kunne bruge "%.3f" for tre decimaler og så videre.

Du kan antage, at vi kan gøre følgende:

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

Resultat:

1,234,567.2f

Men det virkede tydeligvis ikke.

SQLite giver os ikke omfattende formateringsmuligheder for tal. Talformatering kan være ret involveret, og det er normalt bedre at anvende formatering på applikationsniveau.

Når det er sagt, hvis du virkelig har brug for at gøre dette i SQLite, kan du prøve at formatere heltalsdelen med kommaer og derefter sammenkæde det med decimaldelen.

Antag for eksempel, at vi har en databasekolonne kaldet price , der returnerer følgende resultat:

SELECT price FROM Products;

Resultat:

5457.99   
1238999.99
11.357    
3.49      
3.0001    
1234567.89
1499.5    
9.49      
149  

Vi kunne gøre noget på følgende måde for at formatere alle disse tal med en tusinde-separator og et decimaltegn:

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

Resultat:

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

SQLite 3.38.0 (udgivet 22. februar 2022) omdøbte printf() funktion til format() . Den originale printf() navnet bibeholdes som et alias for bagudkompatibilitet.

Derfor kan det første eksempel på denne side ændres som følger:

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

Resultat:

123,456,789

  1. SQL Server - stop eller bryd udførelse af et SQL-script

  2. Skift af Django-projekt fra sqlite3-backend til postgresql mislykkes ved indlæsning af datadump

  3. Oracle FOR LOOP SELECT-erklæringseksempel

  4. Forståelse af beskidt læseproblem med SQL Server