W PostgreSQL możemy użyć TO_CHAR()
funkcja formatowania liczb w zadanym formacie. Obejmuje to formatowanie liczb z przecinkami w odpowiedniej lokalizacji.
PostgreSQL ma również money
typ danych, który wyprowadza wartość przy użyciu bieżących ustawień regionalnych. Może to zawierać przecinki w odpowiednim miejscu, w zależności od używanego języka.
TO_CHAR()
Funkcja
Oto przykład użycia TO_CHAR()
funkcja wyprowadzania liczby z przecinkami:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Wynik:
123,456.78
Drugi argument składa się z kilku liczbowych wzorców szablonów, które określają sposób formatowania pierwszego argumentu.
Tutaj użyłem G
wzorzec szablonu dla separatora grup uwzględniającego ustawienia regionalne (nazywanego również „separatorem tysięcy”). Mogłem użyć przecinka (,
), ale nie uwzględniałoby to ustawień regionalnych.
Użyłem również D
wzorzec szablonu dla separatora dziesiętnego uwzględniającego ustawienia regionalne.
W tym przypadku również użyłem fm
(co oznacza „Tryb wypełniania”), aby pominąć wszelkie końcowe zera i początkowe spacje, które mogły zostać automatycznie zastosowane do wyniku.
9
wzór szablonu jest dla każdej cyfry. Możesz użyć 0
zamiast tego, jeśli chcesz uwzględnić wiodące zera.
Ponieważ G
i D
wzorce szablonów są świadome lokalizacji, są w stanie wytworzyć odpowiedni znak dla grupy i separatorów dziesiętnych.
Oto przykład pokazujący, co mam na myśli:
SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Wynik:
123.456,78
Teraz separator grup jest reprezentowany przez kropkę/kropkę, a separator dziesiętny jest reprezentowany przez przecinek. Dzieje się tak, ponieważ zmieniłem lc_numeric
zmienna do użycia fr_FR
(dla Francji) i jest zwyczajem francuskim, że jego separator grupowy i kropka dziesiętna są reprezentowane w ten sposób.
Różne języki mają różne konwencje formatowania liczb, a G
i D
modyfikatory formatu są w stanie określić, których znaków użyć jako separatorów grup i separatora dziesiętnego .
money
Typ danych
PostgreSQL ma money
typ danych, który wyświetla swoje wartości sformatowane w sposób uwzględniający ustawienia regionalne.
Przykład:
SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);
Wynik:
$123,456.78
Teraz zmieńmy lc_monetary
zmienna i zobacz, jak to wpływa na wyjście:
SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);
Wynik:
123 456,78 Eu
W tym przypadku separatorem grupy jest spacja, a separatorem dziesiętnym jest przecinek.