MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona TRIM() in MariaDB

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