Дополнение строки слева
Функция
Дополнение строки слева заданными символами.
Спецификация
::=
::=
::=
Общие правила
-
В качестве
<строки>
можно использовать выражения типаCHAR
,VARCHAR
,NCHAR
,NCHAR VARYING
. -
<Новая длина>
должна быть беззнаковым<числовым литералом>
. -
Если
<новая длина>
больше исходной длины<строки>
, то<строка>
расширяется слева<дополняемыми символами>
до<новой длины> <строки>
(возможно, с повторением<дополняемых символов>
).select lpad('12345',10, '**'); | *****12345 |
-
Если тип данных
<строки> CHAR
, то концевые пробелы справа удаляются. -
Если
<дополняемые символы>
не указаны, по умолчанию<строка>
дополняется пробелами. -
Если значение
<новая длина>
меньше исходной длины<строки>
, то исходная<строка>
усекается до заданной<новой длины>
справа.select lpad('12345',3, '**'); | 123 |
-
Если суммарная длина аргумента
<дополняемые символы>
и исходной длины<строки>
больше, чем указанная<новая длина>
,<строка>
дополняется только частью аргумента<дополняемые символы>
. В этом случае аргумент<дополняемые символы>
усекается справа.select lpad('12345',10,'abcdefgh'); | abcde12345 |
-
Все аргументы функции могут быть заданы
, который должен содержать спецификацию типа данных параметра.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;