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

Funkcja RTIM() w Oracle

W Oracle RTRIM() funkcja umożliwia przycięcie prawej części struny. 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:

RTRIM(char [, set ])

Gdzie char i set może być dowolnym typem danych CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB lub NCLOB .

RTRIM usuwa z prawego końca char wszystkie znaki zawarte w set . Jeśli nie określisz set , to domyślnie jest to pojedyncze puste miejsce.

Przykład

Oto przykład:

SELECT RTRIM('Cat                 ')
FROM DUAL;

Wynik:

   RTRIM('CAT') 
_______________ 
Cat            

Tutaj nie określiłem, które znaki należy przyciąć, więc każdy pojedynczy odstęp został odcięty od prawej części ciągu.

Nie jest łatwo zobaczyć efekt powyższego przykładu.

Oto kolejny przykład, w którym ciąg jest łączony z innym ciągiem, porównując wynik z oryginalnym (nieprzyciętym) ciągiem:

SELECT 'Cat     ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat     ') || 'Food'
FROM DUAL;

Wynik:

   'CAT'||'FOOD' 
________________ 
Cat     Food     
CatFood         

Określ postać

W tym przykładzie określam znak do przycięcia. Ułatwia to zobaczenie efektu:

SELECT RTRIM('...Cat...', '.')
FROM DUAL;

Wynik:

   RTRIM('...CAT...','.') 
_________________________ 
...Cat                    

Widzimy więc, że postać została przycięta z prawej strony, ale nie z lewej. Aby przyciąć lewą stronę, użyj LTRIM() lub TRIM() .

Zauważ, że RTRIM() przycina tylko postać / znaki w zestawie, dopóki nie pojawi się postać, której nie ma w zestawie. Oto przykład tego, co mam na myśli:

SELECT RTRIM('Cat...B...', '.')
FROM DUAL;

Wynik:

   RTRIM('CAT...B...','.') 
__________________________ 
Cat...B                   

Jeśli jednak uwzględnimy B w zestawie, to otrzymujemy inny wynik:

SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;

Wynik:

   RTRIM('CAT...B...','.B') 
___________________________ 
Cat                         

Przykład bazy danych

Oto przykład przycinania prawej części wartości w kolumnie bazy danych:

SELECT 
    country_name,
    RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;

Wynik:

   COUNTRY_NAME     TRIMMED 
_______________ ___________ 
Argentina       Argenti     
Australia       Australi    
Belgium         Belgium     
Brazil          Brazil      
Canada          Canad       

Wartości puste

Jeśli jakikolwiek argument ma wartość null wynik to null :

SET NULL 'null';

SELECT 
    RTRIM(null, 3),
    RTRIM('Cat ', null),
    RTRIM(null, null)
FROM DUAL;

Wynik:

   RTRIM(NULL,3)    RTRIM('CAT',NULL)    RTRIM(NULL,NULL) 
________________ ____________________ ___________________ 
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 drugiego argumentu powoduje null :

SET NULL 'null';

SELECT RTRIM('Cat   ', '')
FROM DUAL;

Wynik:

   RTRIM('CAT','') 
__________________ 
null              

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

SELECT RTRIM('Cat ', ' ')
FROM DUAL;

Wynik:

   RTRIM('CAT','') 
__________________ 
Cat               

Nieprawidłowa liczba argumentów

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

SELECT RTRIM()
FROM DUAL;

Wynik:

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:

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

SELECT RTRIM('Cat', 1, '>')
FROM DUAL;

Wynik:

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. Przydatne zapytania dotyczące wygaśnięcia/zasady/ustawień hasła Oracle EBS

  2. Czy mogę skopiować pseudo-rekordy :OLD i :NEW do/do procedury składowanej Oracle?

  3. Stronicowanie z Oracle

  4. Parametry Oracle z instrukcją IN?

  5. Jaki jest powód / użyteczność użycia słowa kluczowego ENABLE w instrukcjach bazy danych Oracle?