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.