Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция RTRIM() в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Метод за събиране:ПРЕДИШНИ И СЛЕДВАЩИ функции в базата данни на Oracle

  2. NLS_LANG настройка за JDBC тънък драйвер?

  3. От съхранена процедура върнете OUT параметър и OUT курсора и анализирайте резултата (Oracle)

  4. Пивот в Oracle 11g

  5. Обработка на ExecuteScalar(), когато не се връщат резултати