sql >> Databáze >  >> RDS >> SQLite

Formátování čísel s čárkou v SQLite

SQLite má printf() funkce nebo format() funkce, která nám umožňuje formátovat čísla podle formátovacího řetězce.

Od SQLite 3.18.0 přijímá příznak čárky, který nám umožňuje mít oddělovače čárek na tisících značkách pro celá čísla.

Je možné udělat další práci, aby to fungovalo s čísly v reálném/plovoucí desetinné čárce.

Příklad

Zde je příklad formátování celého čísla s čárkou jako oddělovačem tisíců:

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

Výsledek:

123,456,789

Formátovací řetězec "%,d" je to, co určilo tento výsledek.

Reálná/plovoucí čísla

Výše uvedené řešení funguje pouze při vrácení čísla bez jeho zlomkové části.

Aplikujme tento formátovací řetězec na reálné číslo:

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

Výsledek:

1,234,567

Stále dostáváme čárky jako oddělovače skupin, protože náš formátovací řetězec neobsahuje zlomkovou část.

Zde je návod, jak vrátit zlomkovou část:

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

Výsledek:

1234567.46

Zde je formátovací řetězec "%.2f" určuje, že výsledek by měl obsahovat dvě desetinná místa. Mohli bychom použít "%.3f" na tři desetinná místa a tak dále.

Můžete předpokládat, že můžeme udělat následující:

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

Výsledek:

1,234,567.2f

Ale to zjevně nefungovalo.

SQLite nám neposkytuje rozsáhlé možnosti formátování čísel. Formátování čísel může být docela složité a obvykle je lepší použít formátování na úrovni aplikace.

To znamená, že pokud to opravdu potřebujete udělat v SQLite, můžete zkusit formátovat celočíselnou část pomocí čárek a poté ji zřetězit s desetinnou částí.

Předpokládejme například, že máme v databázi sloupec s názvem price , který vrátí následující výsledek:

SELECT price FROM Products;

Výsledek:

5457.99   
1238999.99
11.357    
3.49      
3.0001    
1234567.89
1499.5    
9.49      
149  

Mohli bychom udělat něco v následujícím smyslu, abychom všechna tato čísla naformátovali s oddělovačem tisíců a desetinná čárka:

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

Výsledek:

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

SQLite 3.38.0 (vydáno 22. února 2022) přejmenováno na printf() funkce na format() . Původní printf() jméno je zachováno jako alias pro zpětnou kompatibilitu.

První příklad na této stránce lze tedy změnit následovně:

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

Výsledek:

123,456,789

  1. Jak funguje current_time v PostgreSQL

  2. Jak chránit databázi MySQL nebo MariaDB před SQL Injection:Část první

  3. Přehled vygenerovaných sloupců pro PostgreSQL

  4. Úvod do statistiky čekání