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

Come funziona SUBSTRING() in MariaDB

In MariaDB, SUBSTRING() è una funzione di stringa incorporata che restituisce una sottostringa da una determinata stringa.

SUBSTRING() richiede almeno due argomenti; la stringa e la posizione da cui estrarre la sottostringa. Accetta anche un terzo argomento opzionale che consente di specificare la lunghezza della sottostringa.

Sintassi

La sintassi assume le seguenti forme:

SUBSTRING(str,pos), 
SUBSTRING(str FROM pos), 
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)

Dove str è la stringa, pos è la posizione iniziale della sottostringa e len è il numero di caratteri da estrarre.

I due moduli che utilizzano il FROM parola chiave sono sintassi SQL standard.

Esempio

Ecco un esempio di base:

SELECT SUBSTRING('Big fat cat', 5);

Risultato:

+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat                     |
+-----------------------------+

Ecco lo stesso esempio, ma utilizzando la sintassi SQL standard:

SELECT SUBSTRING('Big fat cat' FROM 5);

Risultato:

+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat                         |
+---------------------------------+

Lunghezza sottostringa

Ecco un esempio che specifica la lunghezza della sottostringa da estrarre:

SELECT SUBSTRING('Big fat cat', 5, 3);

Risultato:

+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat                            |
+--------------------------------+

E qui sta usando la sintassi SQL standard:

SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);

Risultato:

+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat                                   |
+---------------------------------------+

Posizione negativa

Specificando un valore negativo per la posizione, la posizione iniziale viene contata all'indietro dalla fine della stringa:

SELECT SUBSTRING('Big fat cat', -3);

Risultato:

+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat                          |
+------------------------------+

Una posizione negativa può essere utilizzata anche quando si utilizza la sintassi SQL standard:

SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);

Risultato:

+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat                                    |
+----------------------------------------+

In questo caso ho anche impostato una lunghezza per la sottostringa.

Modalità Oracle

In modalità Oracle, una posizione iniziale di 0 (zero) viene trattato come 1 . Tuttavia, una posizione iniziale di 1 viene anche trattato come 1 .

Questo è in contrasto con altre modalità, dove 0 restituirà una stringa vuota.

Esempio:

SET SQL_MODE=ORACLE;
SELECT 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Risultato:

+-------------+-------------+
| 0           | 1           |
+-------------+-------------+
| Big fat cat | Big fat cat |
+-------------+-------------+

Eccolo in modalità predefinita:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Risultato:

+------+-------------+
| 0    | 1           |
+------+-------------+
|      | Big fat cat |
+------+-------------+

Argomenti nulli

Se uno (o tutti) gli argomenti sono null , il SUBSTRING() la funzione restituisce null :

SELECT 
    SUBSTRING(null, 3, 3),
    SUBSTRING('Coffee', null, 3),
    SUBSTRING('Coffee', 3, null),
    SUBSTRING(null, null, null);

Risultato:

+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL                  | NULL                         | NULL                         | NULL                        |
+-----------------------+------------------------------+------------------------------+-----------------------------+

Argomenti mancanti

Chiamando SUBSTRING() senza passare alcun argomento genera un errore:

SELECT SUBSTRING();

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