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

3 modi per trovare la posizione di una sottostringa all'interno di una stringa in MySQL

MySQL ha una serie di funzioni di stringa che restituiscono la posizione di una sottostringa all'interno di una stringa. Più specificamente, restituiscono la posizione della prima occorrenza all'interno della stringa (o la prima occorrenza dopo un determinato punto di partenza).

Le funzioni a cui mi riferisco sono le seguenti:

  • INSTR()
  • LOCATE()
  • POSITION()

Di seguito è riportata una panoramica di ciascuno.

INSTR()

Il INSTR() La funzione restituisce la prima occorrenza di una sottostringa all'interno di una stringa.

Ecco la sintassi:

INSTR(str,substr)

Dove str è la stringa che vuoi cercare e substr è la sottostringa che stai cercando.

Esempio

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Risultato:

+--------+
| Result |
+--------+
|     10 |
+--------+

In questo caso, la stringa dogs inizia dalla posizione 10.

Se la sottostringa non viene trovata, un risultato di 0 viene restituito:

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Risultato:

+--------+
| Result |
+--------+
|      0 |
+--------+

LOCALIZZA()

Il LOCATE() la funzione funziona in modo simile, tranne per un paio di differenze; gli argomenti sono in un ordine diverso e puoi fornire un terzo parametro facoltativo per indicare dove iniziare la ricerca.

Pertanto, puoi usarlo in uno dei seguenti modi:

LOCATE(substr,str)
LOCATE(substr,str,pos)

La prima sintassi è proprio come INTSR() sintassi, tranne che str e substr vengono scambiati.

La seconda sintassi aggiunge l'opzione pos argomento, che consente di specificare una posizione per iniziare la ricerca.

Esempio di prima sintassi

Ecco un esempio usando la prima sintassi:

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Risultato:

+--------+
| Result |
+--------+
|     10 |
+--------+

Esempio di seconda sintassi

Ecco un esempio in cui specifichiamo una posizione iniziale per iniziare la ricerca:

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Risultato:

+--------+
| Result |
+--------+
|      7 |
+--------+

Possiamo vedere che la stringa cat può essere trovato alla posizione 1, ma abbiamo specificato 6 come posizione di partenza. Pertanto, la posizione dell'occorrenza successiva di quella stringa era quella restituita.

Come con INSTR() funzione, se la sottostringa non viene trovata, 0 viene restituito.

POSIZIONE()

Il POSITION() funzione è sinonimo di LOCATE() , ma con una sintassi leggermente diversa.

Ecco la sintassi:

POSITION(substr IN str)

Questo è un sinonimo di:

LOCATE(substr,str)

Quindi, potremmo riscrivere uno degli esempi precedenti come segue:

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Risultato:

+--------+
| Result |
+--------+
|     10 |
+--------+