Ако форматирате число в PostgreSQL и искате да промените локала, така че да се използват правилните групови и десетични разделители, ето как можете да направите това.
Има две системни променливи, които представляват интерес:
lc_monetary | Задава локала, който да се използва за форматиране на парични суми. |
lc_numeric | Задава локала, който да се използва за форматиране на числа. |
Те могат да бъдат зададени с SET
изявление.
Например:
SET lc_numeric = 'en_US';
Резултат:
SET
След като зададете това, функции като TO_CHAR()
ще форматира числата според en_US
формат.
Примери
Ето няколко примера, които демонстрират как тези променливи могат да повлияят на изхода:
lc_monetary
Променлива
Ето пример за настройка на lc_monetary
променлива:
SET lc_monetary = 'en_US';
SELECT CAST(123456.789 AS money);
Резултат:
$123,456.79
И тук използва различен локал:
SET lc_monetary = 'de_DE';
SELECT CAST(123456.789 AS money);
Резултат:
Eu123.456,79
lc_numeric
Променлива
Ето пример за настройка на lc_numeric
променлива, след което форматирате число с TO_CHAR()
функция:
SET lc_numeric = 'en_US';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Резултат:
123,456.79
И тук използва различен локал:
SET lc_numeric = 'de_DE';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Резултат:
123,456.79
Проверете текущите настройки
Можете да проверите текущите си настройки с SHOW
команда.
Пример:
SHOW lc_monetary;
Резултат:
en_US
И:
SHOW lc_numeric;
Резултат:
de_DE
Върнете се обратно към стойностите по подразбиране
Можете да използвате следното, за да върнете всяка променлива обратно към нейните настройки по подразбиране:
SET lc_monetary TO DEFAULT;
SHOW lc_monetary;
Резултат:
en_US.UTF-8
И за lc_numeric
:
SET lc_numeric TO DEFAULT;
SHOW lc_numeric;
Резултат:
en_US.UTF-8
Наличните локали във вашата система и техните имена зависят от това, което е предоставено от доставчика на операционната система и какво е инсталирано. Вижте документацията на PostgreSQL относно поддръжката на локал за повече информация.