В PostgreSQL можем да използваме TO_CHAR()
функция за добавяне на водещи нули към число. Функцията преобразува числото в низ, като използва (по избор) формат, който посочим.
Друга възможност е да използвате LPAD()
функция за допълване на число с водещи нули.
TO_CHAR()
Функция
Когато използвате TO_CHAR()
функция, използвайте 0
форматен елемент, за да включва начални и/или крайни нули.
Пример:
ИЗБЕРЕТЕ TO_CHAR(7, 'fm000');
Резултат:
007
Ето го в сравнение с 9
форматен елемент:
ИЗБЕРЕТЕ TO_CHAR(7, 'fm999') КАТО "9", TO_CHAR(7, 'fm000') КАТО "0";
Резултат:
<преди> 9 | 0 ---+----- 7 | 007
Броят на водещите нули се определя от броя на 0
форматни елементи и броя на цифрите в числото:
ИЗБЕРЕТЕ TO_CHAR(77, 'fm0') КАТО "r1", TO_CHAR(77, 'fm00000') КАТО "r2", TO_CHAR(777, 'fm00000') КАТО "r3", TO_CHAR(7777, 'fm00000') AS "r4", TO_CHAR(77777, 'fm00000') AS "r5";
Резултат:
<пред> r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- # | 00077 | 00777 | 07777 | 77777
fm
модификаторът на формат потиска всички водещи и/или крайни запълвания, които могат да бъдат включени в резултата. Например, когато числото е отрицателно, се поставя знак минус. Но когато числото е положително, не се включва знак и се появява интервал, където би бил знакът плюс.
Ето пример за демонстриране на това:
ИЗБЕРЕТЕ TO_CHAR(-7, '000') КАТО "Знак минус", TO_CHAR(7, '000') КАТО "Подплатено", TO_CHAR(7, 'fm000') КАТО "Неподплатено";код>
Резултат:
Знак минус | Подплатен | Неподплатен ------------+--------+------------ -007 | 007 | 007
LPAD()
Функция
Като алтернатива можем да използваме LPAD()
функция за добавяне на числа с водещи нули:
ИЗБЕРЕТЕ LPAD('7', 3, '0');
Резултат:
007
Друг пример:
ИЗБЕРЕТЕ LPAD('77', 1, '0') КАТО "r1", LPAD('77', 5, '0') КАТО "r2", LPAD('777', 5, ' 0') AS "r3", LPAD('7777', 5, '0') AS "r4", LPAD('77777', 5, '0') AS "r5";
Резултат:
<пред> r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | 00077 | 00777 | 07777 | 77777Имайте предвид, че тази функция изисква числото да се предава като низ. Следователно първо трябва да преобразуваме числото в низ. Знакът за допълване също трябва да бъде низ.
Така че може да се наложи да направим нещо подобно:
ИЗБЕРЕТЕ LPAD(CAST(7 AS varchar), 3, '0');
Резултат:
007
Едно от предимствата на LPAD()
има над предишния метод е, че можем да поставим пред резултата други знаци – не е необходимо да е водеща нула.
ИЗБЕРЕТЕ LPAD('77', 1, '.') КАТО "r1", LPAD('77', 5, '.') КАТО "r2", LPAD('777', 5, '). .') AS "r3", LPAD('7777', 5, '.') AS "r4", LPAD('77777', 5, '.') AS "r5";
Резултат:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | ...77 | ..777 | .7777 | 77777