Oracle
 sql >> Database >  >> RDS >> Oracle

Funzione RTRIM() in Oracle

In Oracle, il RTRIM() La funzione consente di tagliare la parte destra di una stringa. Per impostazione predefinita, taglia lo spazio bianco, ma puoi facoltativamente specificare uno o più caratteri diversi da ritagliare.

Sintassi

La sintassi è questa:

RTRIM(char [, set ])

Dove char e set può essere uno qualsiasi dei tipi di dati CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB o NCLOB .

RTRIM rimuove dall'estremità destra di char tutti i caratteri contenuti nel set . Se non specifichi set , quindi il valore predefinito è un singolo spazio vuoto.

Esempio

Ecco un esempio:

SELECT RTRIM('Cat                 ')
FROM DUAL;

Risultato:

   RTRIM('CAT') 
_______________ 
Cat            

Qui, non ho specificato quale/i carattere/i tagliare, quindi ogni singolo spazio vuoto è stato tagliato dalla parte destra della stringa.

Non è facile vedere l'effetto dell'esempio sopra.

Ecco un altro esempio, con la stringa concatenata con un'altra stringa, mentre si confronta l'output con la stringa originale (non tagliata):

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

Risultato:

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

Specifica un carattere

In questo esempio specifico un carattere da tagliare. Questo rende più facile vedere l'effetto:

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

Risultato:

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

Quindi possiamo vedere che il personaggio è stato tagliato dal lato destro ma non dal lato sinistro. Per tagliare il lato sinistro, usa LTRIM() o TRIM() .

Nota che RTRIM() taglia solo il personaggio/i nel set up fino a quando non c'è un personaggio che non è nel set. Ecco un esempio di cosa intendo:

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

Risultato:

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

Tuttavia, se includiamo B nel set, quindi otteniamo un risultato diverso:

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

Risultato:

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

Esempio di database

Ecco un esempio di taglio della parte destra dei valori in una colonna del database:

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

Risultato:

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

Valori Nulli

Se un argomento è null il risultato è null :

SET NULL 'null';

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

Risultato:

   RTRIM(NULL,3)    RTRIM('CAT',NULL)    RTRIM(NULL,NULL) 
________________ ____________________ ___________________ 
null             null                 null               

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Tagliare le stringhe vuote

Il passaggio di una stringa vuota come secondo argomento restituisce null :

SET NULL 'null';

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

Risultato:

   RTRIM('CAT','') 
__________________ 
null              

Ma l'aggiunta di un singolo spazio alla stringa vuota cambia e taglia gli spazi vuoti a destra della stringa:

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

Risultato:

   RTRIM('CAT','') 
__________________ 
Cat               

Conteggio argomenti errato

Chiamando RTRIM() senza passare alcun argomento restituisce un errore:

SELECT RTRIM()
FROM DUAL;

Risultato:

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:

E il passaggio del numero errato di argomenti genera un errore:

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

Risultato:

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: