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