V PostgreSQL můžeme použít TO_CHAR()
funkce pro formátování čísel v daném formátu. To zahrnuje formátování čísel s čárkami v příslušném umístění.
PostgreSQL má také money
datový typ, který vypíše hodnotu pomocí aktuálního národního prostředí. To může zahrnovat čárky na příslušném místě podle používaného národního prostředí.
TO_CHAR()
Funkce
Zde je příklad použití TO_CHAR()
funkce pro výstup čísla s čárkami:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Výsledek:
123,456.78
Druhý argument se skládá z řady vzorů číselných šablon, které určují, jak je formátován první argument.
Zde jsem použil G
vzor šablony pro oddělovač skupin s ohledem na národní prostředí (také označovaný jako „oddělovač tisíců“). Mohl jsem použít čárku (,
), ale to by neznal národní prostředí.
Také jsem použil D
vzor šablony pro oddělovač desetinných míst s ohledem na národní prostředí.
V tomto případě jsem také použil fm
(což znamená “Fill Mode”) pro potlačení všech koncových nul a úvodních mezer, které mohly být automaticky použity na výsledek.
9
vzor šablony je pro každou číslici. Můžete použít 0
místo toho, pokud chcete zahrnout úvodní nuly.
Protože G
a D
vzory šablon jsou s ohledem na národní prostředí, jsou schopny vytvořit vhodný znak pro skupinu a oddělovače desetinných míst.
Zde je příklad, který demonstruje, co tím myslím:
SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Výsledek:
123,456.78
Nyní je oddělovač skupiny reprezentován tečkou/tečkou a desetinný oddělovač je reprezentován čárkou. Je to proto, že jsem změnil lc_numeric
proměnnou pro použití fr_FR
(pro Francii) a je francouzským zvykem mít svůj oddělovač skupiny a desetinnou čárku reprezentován tímto způsobem.
Různá národní prostředí mají různé konvence pro formátování čísel a G
a D
modifikátory formátu jsou schopny určit, které znaky se mají použít pro oddělovače skupin a desetinný oddělovač.
money
Typ dat
PostgreSQL má money
datový typ, který vydává své hodnoty formátované způsobem s ohledem na národní prostředí.
Příklad:
SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);
Výsledek:
$123,456.78
Nyní změňme lc_monetary
a podívejte se, jak to ovlivní výstup:
SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);
Výsledek:
123 456,78 Eu
V tomto případě je oddělovač skupiny reprezentován mezerou a desetinným oddělovačem je čárka.