In MariaDB, puoi usare SUBSTRING_INDEX()
funzione per restituire tutto prima o dopo un determinato carattere (o caratteri) in una stringa.
Questa funzione accetta tre argomenti; la stringa, il delimitatore e il numero di occorrenze di tale delimitatore da utilizzare per determinare la sottostringa da restituire.
Esempi
Possiamo vedere come funziona la funzione nei seguenti esempi.
Seleziona Tutto prima
Per selezionare tutto prima di un determinato carattere, rendi il terzo argomento un valore positivo:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);
Risultato:
Red,Green
In questo esempio, selezioniamo tutto prima della seconda virgola. Questo viene fatto usando una virgola (,
) come delimitatore e 2
come il conteggio.
Ho usato una virgola in quell'esempio, ma potrebbe essere qualsiasi carattere o stringa:
SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);
Risultato:
Red or Green
Seleziona Tutto dopo
Usa un valore negativo per selezionare tutto dopo un determinato carattere:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);
Risultato:
Green,Blue
Nota che il valore negativo significa che verrà conteggiato da destra, quindi seleziona la sottostringa a destra del delimitatore.
Quando il delimitatore non viene trovato
Se il delimitatore non viene trovato nella stringa, la stringa viene restituita per intero.
Esempio:
SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);
Risultato:
Red,Green,Blue
In questo caso, l'intera stringa viene restituita per intero perché abbiamo utilizzato un trattino (-
) come delimitatore ma non c'erano trattini nella stringa.
Otterremmo lo stesso risultato se la stringa fa contengono il delimitatore, ma il nostro count
supera il numero di delimitatori nella stringa.
Esempio:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 10);
Risultato:
Red,Green,Blue
Maiuscole/minuscole
Il SUBSTRING_INDEX()
La funzione esegue una ricerca con distinzione tra maiuscole e minuscole per il delimitatore. Cioè, il delimitatore deve essere il caso corretto prima che corrisponda.
Caso errato
Ecco un esempio in cui il caso non corrisponde:
SELECT SUBSTRING_INDEX('Red and green and blue', 'AND', 2);
Risultato:
Red and green and blue
Otteniamo l'intera stringa per intero.
Caso corretto
Ora ecco lo stesso esempio, ma dove il caso corrisponde:
SELECT SUBSTRING_INDEX('Red and green and blue', 'and', 2);
Risultato:
Red and green