Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja TRIM() w Oracle

W Oracle TRIM() funkcja umożliwia przycinanie znaków z boków ciągu.

Możesz przycinać znaki wiodące, znaki końcowe lub jedno i drugie.

Domyślnie przycina białe znaki, ale możesz opcjonalnie określić inny znak lub znaki do przycięcia.

Składnia

Składnia wygląda tak:

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

Oba trim_character i trim_source może być VARCHAR2 lub dowolny typ danych, który można niejawnie przekonwertować na VARCHAR2 .

Przykład

Oto prosty przykład do zademonstrowania:

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

Wynik:

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

W tym przypadku określony znak (. ) został usunięty z obu stron sznurka.

Został usunięty z obu stron, ponieważ nie określiłem, z której strony go usunąć.

Możemy uzyskać ten sam wynik, dołączając BOTH słowo kluczowe:

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

Wynik:

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

Przytnij główne postacie

I znowu, ale z usuniętymi tylko wiodącymi postaciami:

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

Wynik:

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

Przytnij końcowe znaki

I oto jest z usuniętymi tylko znakami końcowymi:

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

Wynik:

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

Domyślny znak

W tym przykładzie nie określam znaku do przycięcia, dlatego przycina on puste miejsca:

SELECT TRIM(' Cat ')
FROM DUAL;

Wynik:

   TRIM('CAT') 
______________ 
Cat           

Nie jest tak łatwo zobaczyć efekt przycinania białych znaków z obu stron.

Oto kolejny przykład, który ułatwia zobaczenie, że biała przestrzeń została usunięta z obu stron:

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

Wynik:

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

Liczby

Łańcuch i znak przycinania mogą mieć postać VARCHAR2 lub dowolny typ danych, który można niejawnie przekonwertować na VARCHAR2 , więc możemy przekazać liczbę podobną do poniższej. Jednak zwracana wartość to VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Wynik:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Tutaj jest z przyciętym innym numerem:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Wynik:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Wartości puste

Jeśli ciąg lub znak przycinania ma wartość null wynik to null :

SET NULL 'null';

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

Wynik:

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

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Przycinanie pustych ciągów

Przekazanie pustego ciągu jako znaku przycinania powoduje null :

SET NULL 'null';

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

Wynik:

   TRIM(''FROM'CAT') 
____________________ 
null                

Ale dodanie pojedynczej spacji do pustego ciągu zmienia to i usuwa wszelkie spacje z ciągu:

SET NULL 'null';

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

Wynik:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Nieprawidłowa liczba argumentów

Wywołanie TRIM() bez przekazywania żadnych argumentów zwraca błąd:

SELECT TRIM()
FROM DUAL;

Wynik:

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:

A przekazanie niewłaściwej liczby argumentów skutkuje błędem:

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

Wynik:

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:

Zobacz także RTRIM() i LTRIM() dla bardziej ukierunkowanych funkcji do przycinania każdej strony ciągu. Te funkcje umożliwiają również wycięcie wielu znaków z ciągu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między widokami a widokami zmaterializowanymi w Oracle?

  2. Oracle SQL — sumowanie i grupowanie danych według tygodnia

  3. sprawdź poprawną datę, która jest zadeklarowana w varchar2

  4. Funkcja ATAN2() w Oracle

  5. Czy Oracle przechowuje końcowe zera dla typu danych Number?