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

Come funziona SUBSTRING_INDEX() in MariaDB

In MariaDB, SUBSTRING_INDEX() è una funzione di stringa incorporata. Restituisce una sottostringa da una stringa prima di un certo numero di occorrenze del delimitatore specificato.

SUBSTRING_INDEX() richiede a tre argomenti; la stringa, il delimitatore e il conteggio (ovvero il numero di occorrenze di quel delimitatore).

Sintassi

La sintassi è questa:

SUBSTRING_INDEX(str,delim,count)

Dove str è la stringa, delim è il delimitatore e count è il numero di occorrenze di quel delimitatore da utilizzare per determinare la sottostringa da restituire.

Se count è positivo, viene restituito tutto a sinistra del delimitatore finale (contando da sinistra). Se count è negativo, viene restituito tutto a destra del delimitatore finale (contando da destra).

Esempio

Ecco un esempio di base:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);

Risultato:

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |
+-------------------------------------------------------+
| /users/homer                                          |
+-------------------------------------------------------+

Conteggio negativo

Se si specifica un valore negativo per il conteggio, viene conteggiato all'indietro dalla fine della stringa:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);

Risultato:

+--------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |
+--------------------------------------------------------+
| homer/docs/cat_vids                                    |
+--------------------------------------------------------+

Delimitatore non trovato

Se il delimitatore non esiste nella stringa, viene restituita l'intera stringa:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);

Risultato:

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) |
+-------------------------------------------------------+
| /users/homer/docs/cat_vids                            |
+-------------------------------------------------------+

Argomenti nulli

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

SELECT 
    SUBSTRING_INDEX(null, '/', 3) AS "1",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
    SUBSTRING_INDEX(null, null, null) AS "4";

Risultato:

+------+------+------+------+
| 1    | 2    | 3    | 4    |
+------+------+------+------+
| NULL | NULL | NULL | NULL |
+------+------+------+------+

Argomenti mancanti

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

SELECT SUBSTRING_INDEX();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'