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'