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