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

Spiegazione di MariaDB SUBSTR()

In MariaDB, SUBSTR() è sinonimo di SUBSTRING() .

È una funzione di stringa incorporata che restituisce una sottostringa da una determinata stringa.

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:

SUBSTR(str,pos), 
SUBSTR(str FROM pos), 
SUBSTR(str,pos,len),
SUBSTR(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 SUBSTR('Good doggy', 6);

Risultato:

+-------------------------+
| SUBSTR('Good doggy', 6) |
+-------------------------+
| doggy                   |
+-------------------------+

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

SELECT SUBSTR('Good doggy' FROM 6);

Risultato:

+-----------------------------+
| SUBSTR('Good doggy' FROM 6) |
+-----------------------------+
| doggy                       |
+-----------------------------+

Lunghezza sottostringa

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

SELECT SUBSTR('Good doggy', 6, 3);

Risultato:

+----------------------------+
| SUBSTR('Good doggy', 6, 3) |
+----------------------------+
| dog                        |
+----------------------------+

E qui sta usando la sintassi SQL standard:

SELECT SUBSTR('Good doggy' FROM 6 FOR 3);

Risultato:

+-----------------------------------+
| SUBSTR('Good doggy' FROM 6 FOR 3) |
+-----------------------------------+
| dog                               |
+-----------------------------------+

Posizione negativa

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

SELECT SUBSTR('Good doggy', -5);

Risultato:

+--------------------------+
| SUBSTR('Good doggy', -5) |
+--------------------------+
| doggy                    |
+--------------------------+

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

SELECT SUBSTR('Good doggy' FROM -5 FOR 3);

Risultato:

+------------------------------------+
| SUBSTR('Good doggy' FROM -5 FOR 3) |
+------------------------------------+
| dog                                |
+------------------------------------+

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 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Risultato:

+------------+------------+
| 0          | 1          |
+------------+------------+
| Good doggy | Good doggy |
+------------+------------+

Eccolo in modalità predefinita:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Risultato:

+------+------------+
| 0    | 1          |
+------+------------+
|      | Good doggy |
+------+------------+

Argomenti nulli

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

SELECT 
    SUBSTR(null, 3, 3),
    SUBSTR('Doggy', null, 3),
    SUBSTR('Doggy', 3, null),
    SUBSTR(null, null, null);

Risultato:

+--------------------+--------------------------+--------------------------+--------------------------+
| SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) |
+--------------------+--------------------------+--------------------------+--------------------------+
| NULL               | NULL                     | NULL                     | NULL                     |
+--------------------+--------------------------+--------------------------+--------------------------+

Argomenti mancanti

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

SELECT SUBSTR();

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