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'