В 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