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.