Puoi usare MySQL SUBSTRING_INDEX()
funzione per restituire tutto prima o dopo un determinato carattere (o caratteri) in una stringa.
Questa funzione ti consente di specificare il delimitatore da utilizzare e puoi specificare quale (nel caso in cui ce ne sia più di uno nella stringa).
Sintassi
Ecco la sintassi:
SUBSTRING_INDEX(str,delim,count)
Dove str
è la stringa, delim
è il delimitatore (da cui vuoi una sottostringa a sinistra oa destra di) e count
specifica quale delimitatore (nel caso ci siano più occorrenze del delimitatore nella stringa).
Tieni presente che il delimitatore può essere un carattere singolo o più caratteri.
Esempio 1:seleziona Tutto a sinistra
Per selezionare tutto prima un certo carattere, usa un valore positivo:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Risultato:
Cats,Dogs
In questo esempio, selezioniamo tutto prima della seconda virgola. Questo viene fatto usando una virgola (,
) come delimitatore e 2
come il conteggio.
Esempio 2:seleziona Tutto a destra
Per selezionare tutto dopo un certo carattere, devi usare un valore negativo:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Risultato:
Dogs,Rabbits
Nota che il valore negativo significa che verrà conteggiato da destra, quindi seleziona la sottostringa a destra del delimitatore.
Cosa succede se il delimitatore non corrisponde?
Se il delimitatore non viene trovato nella stringa, la stringa viene semplicemente restituita per intero.
Esempio:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Risultato:
Cats,Dogs,Rabbits
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('Cats,Dogs,Rabbits', ',', 10);
Risultato:
Cats,Dogs,Rabbits
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('Cats and Dogs and Rabbits', 'AND', 2);
Risultato:
Cats and Dogs and Rabbits
Otteniamo l'intera stringa per intero.
Caso corretto
Ora ecco lo stesso esempio, ma dove il caso corrisponde:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Risultato:
Cats and Dogs