TRIM, LTRIM и RTRIM - усечение строк в PL/SQL на примерах

Действие функций PL/SQL TRIM, LTRIM и RTRIM противоположно действию LPAD и RPAD: эти функции удаляют символы от начала и от конца строки. Пример:

DECLARE
a VARCHAR2(40) := 'This sentence has too many periods......';
b VARCHAR2(40) := 'The number 1';
BEGIN
DBMS_OUTPUT.PUT_LINE( RTRIM(a,'.') );
DBMS_OUTPUT.PUT_LINE(
LTRIM(b, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz')
);
END; 

Результат:

This sentence has too many periods
1 

Как видите, функция RTRIM удалила все точки. Второй аргумент этой функции определяет удаляемые символы. В приведенном примере вызов LTRIM выглядит немного абсурдно, но он демонстрирует возможность задания целого набора удаляемых символов. Мы запрашиваем удаление всех букв и пробелов от начала строки b и получаем желаемое.

По умолчанию функции удаляют пробелы в начале или в конце строки. Вызов RTRIM(a) эквивалентен RTRIM(a,' '). То же самое относится к LTRIM(a) и LTRIM(a,' ').

Еще одна функция удаления символов из строки — TRIM — была включена в Oracle8i для более полного соответствия стандарту ISO SQL. Как видно из следующего примера, функция TRIM несколько отличается от LTRIM и RTRIM

DECLARE
x VARCHAR2(30) := '.....Hi there!.....';
BEGIN
DBMS_OUTPUT.PUT_LINE( TRIM(LEADING '.' FROM x) );
DBMS_OUTPUT.PUT_LINE( TRIM(TRAILING '.' FROM x) );
DBMS_OUTPUT.PUT_LINE( TRIM(BOTH '.' FROM x) );
--По умолчанию удаление производится с обоих концов строки
DBMS_OUTPUT.PUT_LINE( TRIM('.' FROM x) );
--По умолчанию удаляются пробелы:
DBMS_OUTPUT.PUT_LINE( TRIM(x) );
END;
Результат:
Hi there!.....
.....Hi there!
Hi there!
Hi there!
.....Hi there!.....

Одна функция позволяет усекать строку с любой из двух сторон или же с обеих сторон сразу. Тем не менее вы можете задать только один удаляемый символ. Например, следующая запись недопустима:

TRIM(BOTH ',.;' FROM x)

Вместо нее для решения нашей конкретной задачи приходится использовать комбинацию RTRIM и LTRIM:

RTRIM(LTRIM(x,',.;'),',.;') 

 

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

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