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

Come funziona la funzione POSITION() in MySQL

In MySQL, il POSITION() La funzione restituisce la posizione della prima occorrenza di una sottostringa all'interno della stringa.

Questa funzione è in realtà un sinonimo di LOCATE() , ma con una sintassi leggermente diversa. Il LOCATE() la funzione ha anche funzionalità extra, in quanto ti consente di definire una posizione di partenza per la tua ricerca.

Sintassi

La sintassi di base è questa:

POSITION(substr IN str)

Dove substr è la sottostringa e str è la stringa.

Esempio 1 – Utilizzo di base

SELECT POSITION('Cat' IN 'The Cat') Result;

Risultato:

+--------+
| Result |
+--------+
|      5 |
+--------+

Esempio 2:distinzione tra maiuscole e minuscole

Il POSITION() la funzione è multibyte sicura e distingue tra maiuscole e minuscole solo se almeno un argomento è una stringa binaria.

Quindi il seguente esempio non fa distinzione tra maiuscole e minuscole:

SELECT POSITION('Cat' IN 'The cat') Result;

Risultato:

+--------+
| Result |
+--------+
|      5 |
+--------+

Esempio 3 – Nessuna corrispondenza

La funzione restituisce 0 se la sottostringa non viene trovata all'interno della stringa:

SELECT POSITION('Dog' IN 'The cat') Result;

Risultato:

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

Esempio 4 – Sottostringhe incorporate

Fai attenzione quando scegli la sottostringa. Se fa parte di un'altra parola, potresti ottenere un falso positivo:

SELECT POSITION('Cat' IN 'Good Catch!') Result;

Risultato:

+--------+
| Result |
+--------+
|      6 |
+--------+

Se stai solo cercando gatto , l'animale, questo sarebbe un falso positivo.

Esempio 5:solo prima occorrenza

Ricorda, questa funzione restituisce solo la posizione del primo occorrenza della sottostringa. Eventuali occorrenze successive vengono ignorate:

SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;

Risultato:

+--------+
| Result |
+--------+
|      4 |
+--------+

Esempio 6 – Argomenti NULL

Se uno qualsiasi degli argomenti è NULL , il risultato è NULL :

SELECT 
  POSITION('Cat' IN NULL) 'Result 1',
  POSITION(NULL IN 'The Cat') 'Result 2';

Risultato:

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|     NULL |     NULL |
+----------+----------+

Come accennato, puoi anche usare LOCATE() funzione, che ti permette di definire una posizione di partenza per la tua ricerca.