Om du formaterar ett tal i PostgreSQL och du vill ändra språket så att rätt grupp- och decimalavgränsare används, så kan du göra det så här.
Det finns två systemvariabler av intresse:
lc_monetary | Ställer in lokalen som ska användas för att formatera monetära belopp. |
lc_numeric | Ställer in lokalen som ska användas för att formatera siffror. |
Dessa kan ställas in med SET
uttalande.
Till exempel:
SET lc_numeric = 'en_US';
Resultat:
SET
Efter att ha ställt in det, fungerar som TO_CHAR()
kommer att formatera nummer enligt en_US
format.
Exempel
Här är några exempel som visar hur dessa variabler kan påverka utdata:
lc_monetary
Variabel
Här är ett exempel på hur du ställer in lc_monetary
variabel:
SET lc_monetary = 'en_US';
SELECT CAST(123456.789 AS money);
Resultat:
$123,456.79
Och här använder den en annan plats:
SET lc_monetary = 'de_DE';
SELECT CAST(123456.789 AS money);
Resultat:
Eu123.456,79
lc_numeric
Variabel
Här är ett exempel på hur du ställer in lc_numeric
variabel och sedan formatera ett tal med TO_CHAR()
funktion:
SET lc_numeric = 'en_US';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Resultat:
123,456.79
Och här använder den en annan plats:
SET lc_numeric = 'de_DE';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Resultat:
123.456,79
Kontrollera de aktuella inställningarna
Du kan kontrollera dina nuvarande inställningar med SHOW
kommando.
Exempel:
SHOW lc_monetary;
Resultat:
en_US
Och:
SHOW lc_numeric;
Resultat:
de_DE
Återställ tillbaka till standardvärdena
Du kan använda följande för att återställa varje variabel till dess standardinställning:
SET lc_monetary TO DEFAULT;
SHOW lc_monetary;
Resultat:
en_US.UTF-8
Och för lc_numeric
:
SET lc_numeric TO DEFAULT;
SHOW lc_numeric;
Resultat:
en_US.UTF-8
Lokalerna som är tillgängliga på ditt system och deras namn beror på vad som tillhandahålls av operativsystemsleverantören och vad som installerades. Se PostgreSQL:s dokumentation om lokalstöd för mer information.