sql >> Databasteknik >  >> RDS >> SQLite

Formatera siffror med kommatecken i SQLite

SQLite har en printf() funktion eller format() funktion som låter oss formatera tal enligt en formatsträng.

Från och med SQLite 3.18.0 accepterar den en kommaflagga, vilket gör att vi kan ha kommaavgränsare vid tusentals mark för heltal.

Ytterligare arbete kan göras för att få det att fungera med reella tal/flyttal.

Exempel

Här är ett exempel på att formatera ett heltal med kommatecken som tusentalsavgränsare:

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

Resultat:

123,456,789

Formatsträngen för "%,d" är det som avgjorde detta resultat.

Reella tal/flyttal

Ovanstående lösning fungerar bara när du returnerar numret utan dess bråkdel.

Låt oss tillämpa den formatsträngen på ett reellt tal:

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

Resultat:

1,234,567

Vi får fortfarande kommatecken som gruppseparatorer eftersom vår formatsträng inte inkluderar bråkdelen.

Så här returnerar du bråkdelen:

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

Resultat:

1234567.46

Här är formatsträngen "%.2f" anger att resultatet ska innehålla två decimaler. Vi skulle kunna använda "%.3f" för tre decimaler och så vidare.

Du kan anta att vi kan göra följande:

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

Resultat:

1,234,567.2f

Men det fungerade uppenbarligen inte.

SQLite förser oss inte med omfattande formateringsmöjligheter för siffror. Nummerformatering kan vara ganska involverat, och det är vanligtvis bättre att tillämpa formatering på applikationsnivå.

Som sagt, om du verkligen behöver göra detta i SQLite, kan du försöka formatera heltalsdelen med kommatecken och sedan sammanfoga den med decimaldelen.

Anta till exempel att vi har en databaskolumn som heter price , som returnerar följande resultat:

SELECT price FROM Products;

Resultat:

5457.99   
1238999.99
11.357    
3.49      
3.0001    
1234567.89
1499.5    
9.49      
149  

Vi skulle kunna göra något på följande sätt för att formatera alla dessa siffror med tusentalsavgränsare och en decimalkomma:

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 (släppt 22 februari 2022) döpte om printf() funktion till format() . Den ursprungliga printf() namnet behålls som ett alias för bakåtkompatibilitet.

Därför kan det första exemplet på denna sida ändras enligt följande:

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

Resultat:

123,456,789

  1. Hur man installerar MariaDB på Rocky Linux och AlmaLinux

  2. Oracle UNION Operatör förklaras

  3. Viktig PostgreSQL-övervakning - Del 1

  4. Oracle LIMIT n,m ekvivalent