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.