Jeśli formatujesz liczbę w PostgreSQL i chcesz zmienić ustawienia regionalne, aby używane były prawidłowe separatory grup i dziesiętne, oto jak możesz to zrobić.
Istnieją dwie interesujące zmienne systemowe:
lc_monetary | Ustawia ustawienia regionalne używane do formatowania kwot pieniężnych. |
lc_numeric | Ustawia ustawienia regionalne używane do formatowania liczb. |
Można je ustawić za pomocą SET
oświadczenie.
Na przykład:
SET lc_numeric = 'en_US';
Wynik:
SET
Po ustawieniu tego, funkcje takie jak TO_CHAR()
sformatuje liczby zgodnie z en_US
format.
Przykłady
Oto kilka przykładów pokazujących, jak te zmienne mogą wpływać na dane wyjściowe:
lc_monetary
Zmienna
Oto przykład ustawienia lc_monetary
zmienna:
SET lc_monetary = 'en_US';
SELECT CAST(123456.789 AS money);
Wynik:
$123,456.79
A tutaj używa innego języka:
SET lc_monetary = 'de_DE';
SELECT CAST(123456.789 AS money);
Wynik:
Eu123.456,79
lc_numeric
Zmienna
Oto przykład ustawienia lc_numeric
zmienna, a następnie formatowanie liczby za pomocą TO_CHAR()
funkcja:
SET lc_numeric = 'en_US';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Wynik:
123,456.79
A tutaj używa innego języka:
SET lc_numeric = 'de_DE';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Wynik:
123.456,79
Sprawdź bieżące ustawienia
Możesz sprawdzić swoje bieżące ustawienia za pomocą SHOW
polecenie.
Przykład:
SHOW lc_monetary;
Wynik:
en_US
Oraz:
SHOW lc_numeric;
Wynik:
de_DE
Przywróć wartości domyślne
Aby przywrócić ustawienia domyślne każdej zmiennej, możesz użyć następujących poleceń:
SET lc_monetary TO DEFAULT;
SHOW lc_monetary;
Wynik:
en_US.UTF-8
Oraz dla lc_numeric
:
SET lc_numeric TO DEFAULT;
SHOW lc_numeric;
Wynik:
en_US.UTF-8
Lokalizacje dostępne w systemie i ich nazwy zależą od tego, co zostało dostarczone przez dostawcę systemu operacyjnego i co zostało zainstalowane. Więcej informacji można znaleźć w dokumentacji PostgreSQL na temat obsługi lokalizacji.