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.