Повечето от основните RDBMS имат функции, които ни позволяват да форматираме числа със запетаи като разделител на групата или десетичен разделител.
Някои RDBMS също извеждат определени числови типове данни със запетаи на съответното място.
По-долу са дадени примери за форматиране на числа със запетаи в някои от по-популярните СУБД.
MySQL
В MySQL можем да използваме FORMAT()
функция за форматиране на числа със запетаи:
SELECT FORMAT(123456.789, 2);
Резултат:
123,456.79
Няма нужда да посочвате къде трябва да се поставят запетаите. Функцията знае къде да ги постави.
Тази функция приема и трети аргумент за определяне на локала. Не всички локали използват запетая като разделител на групата – някои локали използват запетая като десетичен разделител. FORMAT()
функцията е достатъчно интелигентна, за да знае коя конвенция да използва.
Пример:
SELECT FORMAT(123456.789, 2, 'de_DE');
Резултат:
123,456.79
Оракул
В Oracle можем да използваме TO_CHAR()
функция за форматиране на число със запетаи:
SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;
Резултат:
12,345.00
G
Елементът format е заместител за разделителя на групата и D
е за десетичния разделител.
В този случай разделителят на групата извежда запетая, а десетичният знак извежда точка. Това е така, защото моята текуща сесия е NLS_TERRITORY
параметърът е настроен на Australia
.
Вярно е, че можем просто да използваме твърдо кодирана запетая вместо G
format елемент, но това предполага, че разделителят на групата е запетая. Не всички локали използват запетая като разделител на групата.
Вижте Как да форматирате число със запетая в Oracle за повече информация и примери за форматиране на числа със запетаи в Oracle.
SQL сървър
В SQL Server можем да използваме FORMAT()
функция за форматиране на числа със запетаи. Тази функция приема числото и форматен низ:
SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
Резултат:
+------------+----------------+-------------+ | Number | Percent | Currency | |------------+----------------+-------------| | 123,456.79 | 12,345,678.90% | $123,456.79 | +------------+----------------+-------------+
Функцията също така приема незадължителен аргумент „култура“ за определяне на локала, който да се използва за форматирания изход.
Можете също така да създадете свой собствен персонализиран низ за формат, така че да можете да определите точно къде отива всеки разделител на хиляди и десетичен разделител.
Вижте Как да форматирате числа със запетаи в SQL Server за примери.
PostgreSQL
PostgreSQL има TO_CHAR()
функция, която работи като едноименната функция на Oracle:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Резултат:
123,456.78
Тази функция е наясно с локала, така че ще представи подходящите групови и десетични разделители за локала.
PostgreSQL също има money
тип данни, който се извежда във формат, който знае локал. Вижте Форматиране на числа със запетаи в PostgreSQL за пример.
SQLite
SQLite е малко по-ограничен в сравнение с повечето други СУБД. Той обаче има printf()
функция, която ни позволява да форматираме числата според форматиращ низ:
SELECT printf("%,d", 123456789);
Резултат:
123,456,789
Това работи добре с цели числа, но реалните числа с плаваща запетая изискват малко повече работа. Вижте Форматиране на числа със запетая в SQLite за повече информация.
Актуализиране :SQLite 3.38.0 (издадена на 22 февруари 2022 г.) преименува printf()
функция към format()
. Оригиналният printf()
името се запазва като псевдоним за обратна съвместимост.
Така че горният пример може да бъде променен на това:
SELECT format("%,d", 123456789);
Резултат:
123,456,789
MariaDB
В MariaDB можем да използваме FORMAT()
функция за форматиране на число със запетаи:
SELECT FORMAT(123456.789, 2);
Резултат:
123,456.79
Както при едноименната функция MySQL, няма нужда да указвате къде трябва да отиват запетаите. Функцията знае къде да ги постави.