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

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

В Oracle, TRIM() функцията ви позволява да изрязвате знаци от страните на низ.

Можете да отрежете водещи знаци, последни знаци или и двете.

По подразбиране отрязва празното пространство, но по избор можете да посочите различен знак или знаци за изрязване.

Синтаксис

Синтаксисът е така:

TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

И двата trim_character и trim_source може да бъде VARCHAR2 или всеки тип данни, които могат да бъдат имплицитно преобразувани в VARCHAR2 .

Пример

Ето един прост пример за демонстрация:

SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;

Резултат:

   TRIM('.'FROM'...CAT...') 
___________________________ 
Cat                        

В този случай посоченият символ (. ) беше премахнат от двете страни на низа.

Беше премахнат от двете страни, защото не посочих от коя страна да го премахна.

Можем да получим същия резултат, като включим BOTH ключова дума:

SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;

Резултат:

   TRIM(BOTH'.'FROM'...CAT...') 
_______________________________ 
Cat                            

Отрежете водещите герои

Ето го отново, но с премахнати само водещи знаци:

SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;

Резултат:

   TRIM(LEADING'.'FROM'...CAT...') 
__________________________________ 
Cat...                            

Отрежете последващите знаци

И ето го с премахнати само завършващи знаци:

SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;

Резултат:

   TRIM(TRAILING'.'FROM'...CAT...') 
___________________________________ 
...Cat                             

Символ по подразбиране

В този пример не посочвам символ за отрязване, следователно той отрязва празно пространство:

SELECT TRIM(' Cat ')
FROM DUAL;

Резултат:

   TRIM('CAT') 
______________ 
Cat           

Не е толкова лесно да видите ефекта, когато изрязвате празно пространство от двете страни.

Ето още един пример, който улеснява виждането, че бялото пространство е премахнато от двете страни:

SELECT 
    'My' || ' Fat ' || 'Cat',
    'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;

Резултат:

   'MY'||'FAT'||'CAT'    'MY'||TRIM('FAT')||'CAT' 
_____________________ ___________________________ 
My Fat Cat            MyFatCat                   

Числа

Низът и символът за отрязване могат да бъдат VARCHAR2 или всеки тип данни, които могат да бъдат имплицитно преобразувани в VARCHAR2 , така че можем да предадем число като следното. Въпреки това, връщаната стойност е VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Резултат:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Ето го с различен номер, който се подрязва:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Резултат:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Нулеви стойности

Ако низът или символът за отрязване са null резултатът е null :

SET NULL 'null';

SELECT 
    TRIM(null FROM '...Cat...'),
    TRIM(BOTH FROM null),
    TRIM(null FROM null)
FROM DUAL;

Резултат:

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
null                         null                  null                 

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Изрязване на празни низове

Предаването на празен низ като символ за отрязване води до null :

SET NULL 'null';

SELECT TRIM('' FROM '   Cat')
FROM DUAL;

Резултат:

   TRIM(''FROM'CAT') 
____________________ 
null                

Но добавянето на едно пространство към празния низ променя това и отрязва всички празни интервали от низа:

SET NULL 'null';

SELECT TRIM(' ' FROM '   Cat')
FROM DUAL;

Резултат:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Неправилен брой аргументи

Извикване на TRIM() без подаване на аргументи връща грешка:

SELECT TRIM()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT TRIM()
FROM DUAL
Error at Command Line : 1 Column : 13
Error report -
SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:

И предаването на грешен брой аргументи води до грешка:

SELECT TRIM(' Cat ', 2)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT TRIM(' Cat ', 2)
FROM DUAL
Error at Command Line : 1 Column : 20
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

Вижте също RTRIM() и LTRIM() за по-целенасочени функции за подрязване на всяка страна на низ. Тези функции също ви позволяват да отрежете няколко знака от низа.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/SQL групово събиране с клауза LIMIT в базата данни на Oracle

  2. Как да проверите дали колона съществува, преди да я добавите към съществуваща таблица в PL/SQL?

  3. Промяна на точността на числовата колона в Oracle

  4. как да изградите отново опашката wf_java_deferred

  5. Хибернация> CLOB> Oracle :(