Дополнение строки слева

Функция

Дополнение строки слева заданными символами.

Спецификация
 
<новая длина>::=
<дополняемые символы>::=
Общие правила
  1. В качестве <строки> можно использовать выражения типа CHAR, VARCHAR, NCHAR, NCHAR VARYING.

  2. <Новая длина> должна быть беззнаковым <числовым литералом>.

  3. Если <новая длина> больше исходной длины <строки>, то <строка> расширяется слева <дополняемыми символами> до <новой длины> <строки> (возможно, с повторением <дополняемых символов>).

    select lpad('12345',10, '**');
    | *****12345 |
  4. Если тип данных <строки> CHAR, то концевые пробелы справа удаляются.

  5. Если <дополняемые символы> не указаны, по умолчанию <строка> дополняется пробелами.

  6. Если значение <новая длина> меньше исходной длины <строки>, то исходная <строка> усекается до заданной <новой длины> справа.

    select lpad('12345',3, '**');
    | 123 |
  7. Если суммарная длина аргумента <дополняемые символы> и исходной длины <строки> больше, чем указанная <новая длина>, <строка> дополняется только частью аргумента <дополняемые символы>. В этом случае аргумент <дополняемые символы> усекается справа.

    select lpad('12345',10,'abcdefgh');
    | abcde12345 |
  8. Все аргументы функции могут быть заданы , который должен содержать спецификацию типа данных параметра.

    select lpad(? (char(20)), ? (int), ? (char(10)));
    Тестовая строка
    30
    12345678
    |12345678  12345Тестовая строка|

Возвращаемое значение
  1. <Строка>, дополненная слева указанными последовательностями символов. Длина <строки> – максимум из исходной длины <строки> и <длины>.

  2. Тип возвращаемого значения совпадает с типом аргумента.

  3. Если аргумент 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;