Дополнение строки слева (LPAD)
Функция
Дополнение строки слева заданными символами.
Спецификация
::=::=::=Общие правила
-
В качестве
<строки>можно использовать выражения типа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;