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.