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

TRIM() Funzione in Oracle

In Oracle, il TRIM() la funzione ti consente di ritagliare i caratteri dai lati di una stringa.

Puoi tagliare i caratteri iniziali, i caratteri finali o entrambi.

Per impostazione predefinita, taglia lo spazio bianco, ma puoi facoltativamente specificare uno o più caratteri diversi da ritagliare.

Sintassi

La sintassi è questa:

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

Entrambi trim_character e trim_source può essere VARCHAR2 o qualsiasi tipo di dati che può essere convertito in modo implicito in VARCHAR2 .

Esempio

Ecco un semplice esempio da dimostrare:

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

Risultato:

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

In questo caso, il carattere specificato (. ) è stato rimosso da entrambi i lati della corda.

È stato rimosso da entrambi i lati perché non ho specificato da quale lato rimuoverlo.

Possiamo ottenere lo stesso risultato includendo BOTH parola chiave:

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

Risultato:

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

Taglia i personaggi principali

Eccolo di nuovo, ma con solo i personaggi principali rimossi:

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

Risultato:

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

Ritaglia i personaggi finali

Ed eccolo qui con solo i caratteri finali rimossi:

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

Risultato:

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

Carattere predefinito

In questo esempio non specifico il carattere da tagliare, quindi taglia lo spazio vuoto:

SELECT TRIM(' Cat ')
FROM DUAL;

Risultato:

   TRIM('CAT') 
______________ 
Cat           

Non è così facile vedere l'effetto quando si ritagliano gli spazi bianchi da entrambi i lati.

Ecco un altro esempio che rende più facile vedere che lo spazio bianco è stato rimosso da entrambi i lati:

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

Risultato:

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

Numeri

La stringa e il carattere di ritaglio possono essere VARCHAR2 o qualsiasi tipo di dati che può essere convertito in modo implicito in VARCHAR2 , quindi possiamo passare un numero come il seguente. Tuttavia, il valore restituito è VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Risultato:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Eccolo con un numero diverso da tagliare:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Risultato:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Valori Nulli

Se la stringa o il carattere di ritaglio sono null il risultato è null :

SET NULL 'null';

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

Risultato:

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
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 carattere di ritaglio risulta in null :

SET NULL 'null';

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

Risultato:

   TRIM(''FROM'CAT') 
____________________ 
null                

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

SET NULL 'null';

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

Risultato:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Conteggio argomenti errato

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

SELECT TRIM()
FROM DUAL;

Risultato:

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:

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

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

Risultato:

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:

Vedi anche RTRIM() e LTRIM() per funzioni più mirate per tagliare ogni lato di una stringa. Queste funzioni consentono anche di ritagliare più caratteri dalla stringa.