Дополнение строки слева
Функция
Дополнение строки слева заданными символами.
Спецификация
::=::=::=Общие правила
-
В качестве
< строки >можно использовать выражения типаCHAR,VARCHAR,NCHAR,NCHAR VARYING. -
< Новая длина >должна быть беззнаковым< числовым литералом >. -
Если
< новая длина >больше исходной длины< строки >, то< строка >расширяется слева< дополняемыми символами >до< новой длины > < строки >(возможно, с повторением< дополняемых символов >).select lpad('12345',10, '**'); | *****12345 | -
Если тип данных
< строки > CHAR, то концевые пробелы справа удаляются. -
Если
< дополняемые символы >не указаны, по умолчанию< строка >дополняется пробелами. -
Если значение
< новая длина >меньше исходной длины< строки >, то исходная< строка >усекается до заданной< новой длины >справа.select lpad('12345',3, '**'); | 123 | -
Если суммарная длина аргумента
< дополняемые символы >и исходной длины< строки >больше, чем указанная< новая длина >,< строка >дополняется только частью аргумента< дополняемые символы >. В этом случае аргумент< дополняемые символы >усекается справа.select lpad('12345',10,'abcdefgh'); | abcde12345 | -
Все аргументы функции могут быть заданы
< SQL-параметром >, который должен содержать спецификацию типа данных параметра.select lpad(? (char(20)), ? (int), ? (char(10))); Тестовая строка 30 12345678 |12345678 12345Тестовая строка|
Возвращаемое значение
-
< Строка >, дополненная слева указанными последовательностями символов. Длина< строки >– максимум из исходной длины< строки >и< длины >. -
Тип возвращаемого значения совпадает с типом аргумента.
-
Если аргумент NULL, результат NULL.
Примеры
select substr(firstnam,1,1)|| '.' ||name, case length(ltrim(to_char(salary))) when 4 then lpad(ltrim(to_char(salary)),5, '$') else lpad(ltrim(to_char(salary)),6, '$') end from person; | J. COLVILLE | $3010 | | G. POORE | $8000 | | J. RAEBIGER | $5100 | | V. PARK | $3300 | | L. MARKUSH | $8800 | | F. VAN DUYN | $5100 | | M. WORLTON | $2700 | | S. MILLS | $3300 | | C. WELLS | $16200 | | J. FARRIS | $9300 | | L. STANWOOD | $4200 | | E. WOOLSEY | $10800 | …
select lpad(' '||to_char(sysdate,'dd.mm.yyyy TIME: hh:mi'),36,upper('Current date:'))
from person
where personid=2;
|CURRENT DATE: 18.09.1998 TIME: 17:05|
select rpad(c,10,substr(vc,1,3)) from tst;