Hvis du formaterer et tal i PostgreSQL, og du vil ændre lokaliteten, så de korrekte gruppe- og decimalseparatorer bruges, er det sådan her, du kan gøre det.
Der er to systemvariabler af interesse:
lc_monetary | Indstiller den lokalitet, der skal bruges til at formatere pengebeløb. |
lc_numeric | Indstiller den lokalitet, der skal bruges til formatering af tal. |
Disse kan indstilles med SET
erklæring.
For eksempel:
SET lc_numeric = 'en_US';
Resultat:
SET
Efter at have indstillet det, fungerer som TO_CHAR()
vil formatere tal i henhold til en_US
format.
Eksempler
Her er nogle eksempler, der viser, hvordan disse variable kan påvirke outputtet:
Den lc_monetary
Variabel
Her er et eksempel på indstilling af lc_monetary
variabel:
SET lc_monetary = 'en_US';
SELECT CAST(123456.789 AS money);
Resultat:
$123,456.79
Og her bruger den en anden lokalitet:
SET lc_monetary = 'de_DE';
SELECT CAST(123456.789 AS money);
Resultat:
Eu123.456,79
Det lc_numeric
Variabel
Her er et eksempel på indstilling af lc_numeric
variabel og derefter formatere et tal med TO_CHAR()
funktion:
SET lc_numeric = 'en_US';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Resultat:
123,456.79
Og her bruger den en anden lokalitet:
SET lc_numeric = 'de_DE';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Resultat:
123,456.79
Tjek de aktuelle indstillinger
Du kan kontrollere dine nuværende indstillinger med SHOW
kommando.
Eksempel:
SHOW lc_monetary;
Resultat:
en_US
Og:
SHOW lc_numeric;
Resultat:
de_DE
Nulstil tilbage til standardværdierne
Du kan bruge følgende til at sætte hver variabel tilbage til dens standardindstilling:
SET lc_monetary TO DEFAULT;
SHOW lc_monetary;
Resultat:
en_US.UTF-8
Og for lc_numeric
:
SET lc_numeric TO DEFAULT;
SHOW lc_numeric;
Resultat:
en_US.UTF-8
De tilgængelige lokaliteter på dit system og deres navne afhænger af, hvad der blev leveret af operativsystemleverandøren, og hvad der blev installeret. Se PostgreSQLs dokumentation om lokalitetssupport for mere information.