В PostgreSQL можем да използваме TO_CHAR()
функция за форматиране на числа в даден формат. Това включва форматиране на числа със запетаи в съответното местоположение.
PostgreSQL също има money
тип данни, който извежда стойността, използвайки текущия локал. Това може да включва запетаи на подходящото място, въз основа на използвания локал.
TO_CHAR()
Функция
Ето пример за използване на TO_CHAR()
функция за извеждане на число със запетаи:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Резултат:
123,456.78
Вторият аргумент се състои от куп числови шаблони, които определят как е форматиран първият аргумент.
Тук използвах G
шаблонен шаблон за разделител на групи, съобразен с локала (наричан още „разделител на хиляди“). Можех да използвам запетая (,
), но това не би било наясно с локала.
Използвах и D
шаблонен шаблон за десетичен разделител, съобразен с локала.
В този случай използвах и fm
(което означава „Режим на запълване“), за да потиснете всички крайни нули и водещи празни места, които може да са били автоматично приложени към резултата.
9
шаблонът е за всяка цифра. Можете да използвате 0
вместо това, ако искате да включите водещи нули.
Тъй като G
и D
Шаблонните шаблони са наясно с локал, те са в състояние да произведат подходящия знак за групата и десетичните разделители.
Ето пример, за да демонстрирам какво имам предвид:
SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Резултат:
123,456.78
Сега разделителят на групата е представен от точка/точка, а десетичният разделител е представен със запетая. Това е така, защото промених lc_numeric
променлива за използване на fr_FR
(за Франция) и френският обичай е груповият разделител и десетичната запетая да бъдат представени по този начин.
Различните локали имат различни конвенции за форматиране на числа и G
и D
модификаторите на формат могат да определят кои знаци да се използват за разделители на групи и десетичния разделител.
money
Тип данни
PostgreSQL има money
тип данни, който извежда своите стойности, форматирани по начин, съобразен с локала.
Пример:
SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);
Резултат:
$123,456.78
Сега нека променим lc_monetary
променлива и вижте как това се отразява на изхода:
SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);
Резултат:
123 456,78 Eu
В този случай разделителят на групата е представен с интервал, а десетичният разделител е запетая.