In MariaDB, TRIM()
è una funzione di stringa incorporata che rimuove i caratteri dall'inizio o dalla fine di una stringa.
Per impostazione predefinita rimuove gli spazi iniziali e finali, ma puoi specificare quale carattere rimuovere e da quale lato vorresti rimuoverlo.
Sintassi
Il TRIM()
la funzione può essere utilizzata come segue:
TRIM([remstr FROM] str)
Oppure:
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
Dove str
è la stringa da cui rimuovere eventuali spazi finali e remstr
è la stringa da rimuovere.
Se remstr
non è fornito, quindi TRIM()
rimuove gli spazi.
Esempio
Ecco un esempio di base:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(' Caribbean Island ') AS "Trimmed";
Risultato:
+------------------------+------------------+ | Untrimmed | Trimmed | +------------------------+------------------+ | Caribbean Island | Caribbean Island | +------------------------+------------------+
Questo esempio utilizza la sintassi più elementare. Tutto ciò che abbiamo fatto è stato fornire lo spago da tagliare. Non abbiamo specificato quale/i carattere/i tagliare, quindi tutti gli spazi sono stati tagliati da entrambi i lati della stringa.
Possiamo anche vedere che lo spazio all'interno della stringa rimane intatto.
Il BOTH
Argomento
Per impostazione predefinita, TRIM()
taglia entrambi i lati della corda. Tuttavia, puoi specificare esplicitamente BOTH
se lo desideri:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(BOTH FROM ' Caribbean Island ') AS "Trimmed";
Risultato:
+------------------------+------------------+ | Untrimmed | Trimmed | +------------------------+------------------+ | Caribbean Island | Caribbean Island | +------------------------+------------------+
Otteniamo lo stesso risultato dell'esempio precedente.
Il LEADING
Argomento
Specificando LEADING
limita l'operazione di ritaglio solo all'inizio della stringa:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(LEADING FROM ' Caribbean Island ') AS "Trimmed";
Risultato:
+------------------------+---------------------+ | Untrimmed | Trimmed | +------------------------+---------------------+ | Caribbean Island | Caribbean Island | +------------------------+---------------------+
Possiamo vedere che esistono ancora spazi sul lato destro della stringa tagliata. Solo la parte sinistra è stata tagliata.
Il TRAILING
Argomento
Specificando TRAILING
limita l'operazione di ritaglio solo all'inizio della stringa:
SELECT
' Caribbean Island ' AS "Untrimmed",
TRIM(TRAILING FROM ' Caribbean Island ') AS "Trimmed";
Risultato:
+------------------------+---------------------+ | Untrimmed | Trimmed | +------------------------+---------------------+ | Caribbean Island | Caribbean Island | +------------------------+---------------------+
Questa volta è stata tagliata solo la parte destra. Esistono ancora degli spazi sul lato sinistro della stringa tagliata.
Specifica una stringa da tagliare
Ecco un esempio per specificare quale carattere tagliare:
SELECT
'...mountain...' AS "Untrimmed",
TRIM('.' FROM '...mountain...') AS "Trimmed";
Risultato:
+----------------+----------+ | Untrimmed | Trimmed | +----------------+----------+ | ...mountain... | mountain | +----------------+----------+
Non deve essere un singolo personaggio. Puoi specificare qualsiasi stringa da tagliare:
SELECT
TRIM('.' FROM '.+.mountain.+.') AS "1",
TRIM('.+' FROM '.+.mountain.+.') AS "2",
TRIM('+.' FROM '.+.mountain.+.') AS "3",
TRIM('.+.' FROM '.+.mountain.+.') AS "4";
Risultato:
+--------------+--------------+--------------+----------+ | 1 | 2 | 3 | 4 | +--------------+--------------+--------------+----------+ | +.mountain.+ | .mountain.+. | .+.mountain. | mountain | +--------------+--------------+--------------+----------+
Puoi anche tagliare parte della parola se vuoi:
SELECT TRIM('moun' FROM 'mountain');
Risultato:
+------------------------------+ | TRIM('moun' FROM 'mountain') | +------------------------------+ | tain | +------------------------------+
Possiamo anche usare BOTH
, LEADING
e TRAILING
argomenti quando si specifica la stringa da tagliare.
Esempio:
SELECT
TRIM(BOTH '.' FROM '...mountain...') AS "Both",
TRIM(LEADING '.' FROM '...mountain...') AS "Leading",
TRIM(TRAILING '.' FROM '...mountain...') AS "Trailaing";
Risultato:
+----------+-------------+-------------+ | Both | Leading | Trailaing | +----------+-------------+-------------+ | mountain | mountain... | ...mountain | +----------+-------------+-------------+
Argomenti nulli
Se viene assegnato un null
argomento, il risultato è null
:
SELECT TRIM(null);
Risultato:
+------------+ | TRIM(null) | +------------+ | NULL | +------------+
Modalità Oracle
Quando non in esecuzione in modalità Oracle, se il risultato è vuoto (cioè ha una lunghezza pari a zero) il risultato è una stringa vuota.
Tuttavia, durante l'esecuzione in modalità Oracle, il risultato è null
.
Qui è in modalità predefinita (cioè non in modalità Oracle):
SELECT TRIM('');
Risultato:
+----------+ | TRIM('') | +----------+ | | +----------+
Passiamo ora alla modalità Oracle:
SET SQL_MODE=ORACLE;
Ed esegui di nuovo il codice:
SELECT TRIM('');
Risultato:
+----------+ | TRIM('') | +----------+ | NULL | +----------+
C'è anche un modo alternativo per farlo. Invece di passare alla modalità Oracle, puoi utilizzare TRIM_ORACLE()
come nome della funzione.
Torniamo alla modalità predefinita:
SET SQL_MODE=DEFAULT;
E ora esegui TRIM_ORACLE()
:
SELECT TRIM_ORACLE('');
Risultato:
+-----------------+ | TRIM_ORACLE('') | +-----------------+ | NULL | +-----------------+
Argomento mancante
Chiamando TRIM()
senza un argomento genera un errore:
SELECT TRIM();
Risultato:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1