LPAD и RPAD - дополняем строку пробелами в PL/SQL

Иногда в PL/SQL требуется, чтобы обрабатываемая строка имела фиксированный размер. Функции LPAD и RPAD дополняют строку пробелами (или другие символы) слева или справа до заданной длины. В следующем примере эти две функции выводят список имен в два столбца, причем левый столбец выравнивается по левому краю, а правый — по правому краю:

DECLARE
a VARCHAR2(30) := 'Jeff';
b VARCHAR2(30) := 'Eric';
c VARCHAR2(30) := 'Andrew';
d VARCHAR2(30) := 'Aaron';
e VARCHAR2(30) := 'Matt';
f VARCHAR2(30) := 'Joe';
BEGIN
DBMS_OUTPUT.PUT_LINE( RPAD(a,10) || LPAD(b,10) );
Результат:
Jeff Eric
Andrew Aaron
Matt Joe

По умолчанию строки дополняются пробелами. При желании можно задать используемый символ в третьем аргументе. Приведите строки кода к следующему виду:

DBMS_OUTPUT.PUT_LINE( RPAD(a,10,'.') || LPAD(b,10,'.') );
DBMS_OUTPUT.PUT_LINE( RPAD(c,10,'.') || LPAD(d,10,'.') );
DBMS_OUTPUT.PUT_LINE( RPAD(e,10,'.') || LPAD(f,10,'.') ); 

Результат будет выглядеть так:

Jeff............Eric
Andrew.........Aaron
Matt.............Joe 

В качестве заполнителя даже может использоваться целая строка:

DBMS_OUTPUT.PUT_LINE( RPAD(a,10,'-~-') || LPAD(b,10,'-~-') );
DBMS_OUTPUT.PUT_LINE( RPAD(c,10,'-~-') || LPAD(d,10,'-~-') );
DBMS_OUTPUT.PUT_LINE( RPAD(e,10,'-~-') || LPAD(f,10,'-~-') ); 

Новая версия результата:

Jeff-~--~--~--~-Eric
Andrew-~---~--~Aaron
Matt-~--~--~--~--Joe 

Символы или строки-заполнители размещаются слева направо — всегда, даже при использовании функции RPAD. Чтобы убедиться в этом, достаточно повнимательнее присмотреться к 10-символьному «столбцу» с именем Joe.

При использовании LPAD и RPAD необходимо учитывать возможность того, что длина некоторых входных строк изначально может оказаться больше нужной ширины (или равной ей). Для примера попробуем уменьшить ширину столбца до четырех символов: 

DBMS_OUTPUT.PUT_LINE( RPAD(a,4) || LPAD(b,4) );
DBMS_OUTPUT.PUT_LINE( RPAD(c,4) || LPAD(d,4) );
DBMS_OUTPUT.PUT_LINE( RPAD(e,4) || LPAD(f,4) );

Теперь результат будет выглядеть так:

JeffEric
AndrAaro
Matt Joe 

Обратите особое внимание на вторую строку: имена «Andrew» и «Aaron» усечены до четырех символов.

 

Вас заинтересует / Intresting for you:

Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 2131 просмотров Rasen Fasenger Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 4305 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Тип данных RAW в PL/SQL
Тип данных RAW в PL/SQL 3499 просмотров Doctor Thu, 12 Jul 2018, 08:41:33
Символьные функции и аргументы...
Символьные функции и аргументы... 7218 просмотров Анатолий Wed, 23 May 2018, 18:54:01

Войдите чтобы комментировать