Когато работите с Postgres, можете да използвате to_char()
функция за извеждане на числа в даден формат.
Начинът, по който работи е, че предоставяте два аргумента. Първият аргумент е числото, което трябва да се форматира. Вторият аргумент определя как е форматиран.
Връщаната стойност е text .
В зависимост от вашите изисквания, може да предпочетете да преобразувате числото в подходящия тип данни, например като използвате cast()
функция.
Примери за двата метода са по-долу.
Пример
Ето основен пример за демонстрация.
SELECT to_char(10, '99.99');
Резултат:
10.00
9
s всъщност имат специално значение в този контекст. Този знак е един от валидните шаблони, от които може да се състои вашият низ за форматиране, когато форматирате числа.
В случай на 9
, той посочва позиция на цифрата, но ако е водеща нула, тогава тя ще бъде заменена с интервал, докато ако е последна нула и е посочен режим на запълване, тя ще бъде изтрита.
Ако премахна десетичната запетая и частта от секундите, получавам различен резултат.
SELECT to_char(10, '99');
Резултат:
10
Пуснете водещите нули
Можете да замените 9
с 0
ако искате да потиснете началните и задните нули, дори когато са незначителни.
Ето пример, който демонстрира разликата между двете.
SELECT
to_char(0010, '9999') AS "9999",
to_char(0010, '0000') AS "0000";
Резултат:
9999 | 0000 -------+------- 10 | 0010
Шаблони на шаблони
Както се вижда в предишните примери, низът за формат се състои от един или повече шаблони.
Например 9999
е форматен низ, който се състои от четири шаблона – всеки от които е 9
.
Десетичната запетая е друг шаблонен модел.
Можех да използвам D
вместо десетичната запетая. Това използва текущия локал за действителното форматиране.
SELECT
to_char(10, '99.99') AS "99.99",
to_char(10, '99D99') AS "99D99";
Резултат:
99,99 | 99D99 --------+-------- 10.00 | 10.00
За пълен списък с шаблони и модификатори вижте Шаблони и модификатори за числово форматиране в Postgres.
Модификатори на шаблонен шаблон
Има и няколко модификатора, които могат да се използват заедно с шаблона. Те променят начина на форматиране на изхода в зависимост от използвания модификатор.
По-конкретно, има три модификатора, които могат да се използват с цифрово форматиране.
Модификатор | Описание |
---|---|
FM префикс | режим на запълване (потискане на завършващи нули и празни полета) |
TH наставка | наставка на порядков номер с главни букви |
th наставка | наставка за редовен номер с малки букви |
Обърнете внимание, че първият е добавен като префикс към шаблона, а други два се добавят като суфикс.
Редни числа
Често срещано изискване е числото да се преобразува в неговия ред. Можем да използваме или TH
или th
за това, в зависимост от това дали искаме наставката да е с главни или малки букви.
Ето един пример.
SELECT to_char(03, 'FM99th');
Резултат:
3-та
В този случай използвах и FM
за потискане на всички празни места и последващи нули.
Ето сравнение между използването на FM
и пропускането му:
SELECT
to_char(03, '99th') AS "99th",
to_char(03, 'FM99th') AS "FM99th";
Резултат:
<преди> 99-та | FM99-ти -------+-------- 3-ти | 3-тоАко се вгледате внимателно, първата колона има водещи празни места, докато втората колона не.
Валута
Друго често срещано изискване е да се изведе число в дадена валута.
В този случай можем да използваме L
шаблонен шаблон за показване на символ на валута, съобразен с локала.
SELECT to_char(03, 'LFM99D00');
Резултат:
$3,00
Подписани номера
Има и шаблони за подписани числа.
Ето един пример.
SELECT to_char(27, 'S99');
Резултат:
+27
Тук използвах S
за да добавите знак за локал, който е закотвен към номера.
В този случай това беше положително число. Ето още един пример, който използва отрицателна стойност.
SELECT to_char(-27, 'S99');
Резултат:
-27
Има няколко други шаблона, които могат да се използват за подписани числа.
За примери вижте Добавяне на знак плюс/минус към число в Postgres.
И както споменахме, вижте Шаблони и модификатори за числово форматиране в Postgres за пълен списък с модификатори на шаблони, които можете да използвате, когато форматирате числа.
Тип данни
Както споменахме, to_char()
функцията извежда резултата си като текст .
В зависимост от вашите изисквания може да намерите за по-добре да преобразувате числото в по-подходящ тип данни.
Ето пример, който преобразува число в парични данни тип.
SELECT cast(10 as money);
Резултат:
$10,00