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.