В Oracle, RTRIM()
функцията ви позволява да отрежете дясната част на низ. По подразбиране отрязва празното пространство, но по избор можете да посочите различен знак или знаци за изрязване.
Синтаксис
Синтаксисът е така:
RTRIM(char [, set ])
Където char
и set
може да бъде всеки от типовете данни CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
или NCLOB
.
RTRIM
премахва от десния край на char
всички знаци, съдържащи се в set
. Ако не посочите set
, след което по подразбиране е едно празно място.
Пример
Ето един пример:
SELECT RTRIM('Cat ')
FROM DUAL;
Резултат:
RTRIM('CAT') _______________ Cat
Тук не посочих кой знак/и да отрежа и така всяко отделно празно място беше изрязано от дясната част на низа.
Не е лесно да видите ефекта от горния пример.
Ето още един пример, като низът е свързан с друг низ, докато сравнявате изхода с оригиналния (неподрязан) низ:
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Резултат:
'CAT'||'FOOD' ________________ Cat Food CatFood
Посочете знак
В този пример посочвам символ за отрязване. Това улеснява виждането на ефекта:
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Резултат:
RTRIM('...CAT...','.') _________________________ ...Cat
Така че можем да видим, че персонажът е бил подрязан от дясната страна, но не и от лявата страна. За да отрежете лявата страна, използвайте LTRIM()
или TRIM()
.
Обърнете внимание, че RTRIM()
само отрязва символа/ите в набора, докато има символ, който не е в набора. Ето пример за това, което имам предвид:
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Резултат:
RTRIM('CAT...B...','.') __________________________ Cat...B
Въпреки това, ако включим B
в комплекта, тогава получаваме различен резултат:
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Резултат:
RTRIM('CAT...B...','.B') ___________________________ Cat
Пример за база данни
Ето пример за изрязване на дясната част от стойностите в колона на база данни:
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Резултат:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Нулеви стойности
Ако някой аргумент е null
резултатът е null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Резултат:
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Изрязване на празни низове
Предаването на празен низ като втори аргумент води до null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Резултат:
RTRIM('CAT','') __________________ null
Но добавянето на едно пространство към празния низ променя това и отрязва всички празни интервали отдясно на низа:
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Резултат:
RTRIM('CAT','') __________________ Cat
Неправилен брой аргументи
Извикване на RTRIM()
без подаване на аргументи връща грешка:
SELECT RTRIM()
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT RTRIM() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
И предаването на грешен брой аргументи води до грешка:
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT RTRIM('Cat', 1, '>') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: