Mysql
 sql >> Database >  >> RDS >> Mysql

Come selezionare tutto prima/dopo un determinato carattere in MySQL – SUBSTRING_INDEX()

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