I PostgreSQL kan vi använda TO_CHAR()
funktion för att formatera siffror i ett givet format. Detta inkluderar formatering av siffror med kommatecken på den relevanta platsen.
PostgreSQL har också en money
datatyp, som matar ut värdet med den aktuella lokalen. Detta kan inkludera kommatecken på lämplig plats, baserat på det språk som används.
TO_CHAR()
Funktion
Här är ett exempel på hur du använder TO_CHAR()
funktion för att mata ut ett tal med kommatecken:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Resultat:
123,456.78
Det andra argumentet består av ett gäng numeriska mallmönster som bestämmer hur det första argumentet formateras.
Här använde jag G
mallmönster för en platsmedveten gruppseparator (även kallad en "tusentalsavgränsare"). Jag kunde ha använt ett kommatecken (,
), men det skulle inte ha varit lokalt medvetet.
Jag använde också D
mallmönster för en platsmedveten decimalavgränsare.
I det här fallet använde jag också fm
(som står för “Fill Mode”) för att undertrycka eventuella efterföljande nollor och inledande blanksteg som kan ha tillämpats automatiskt på resultatet.
9
mallmönster är för varje siffra. Du kan använda 0
istället om du vill inkludera inledande nollor.
Eftersom G
och D
mallmönster är språkmedvetna, de kan producera rätt tecken för grupp- och decimalavgränsare.
Här är ett exempel för att visa vad jag menar:
SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Resultat:
123.456,78
Nu representeras gruppavgränsaren av en punkt/punkt, och decimalavgränsaren representeras av ett kommatecken. Detta beror på att jag ändrade lc_numeric
variabel för att använda fr_FR
(för Frankrike), och det är fransk sed att ha sin gruppseparator och decimalkomma representerad på detta sätt.
Olika lokaler har olika konventioner för formatering av tal, och G
och D
formatmodifierare kan avgöra vilka tecken som ska användas för gruppseparatorer och decimalavgränsaren.
money
Datatyp
PostgreSQL har en money
datatyp som matar ut sina värden formaterade på ett lokalt medvetet sätt.
Exempel:
SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);
Resultat:
$123,456.78
Låt oss nu ändra lc_monetary
variabel och se hur detta påverkar utdata:
SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);
Resultat:
123 456,78 Eu
I det här fallet representeras gruppavgränsaren av ett mellanslag och decimalavgränsaren är ett kommatecken.