MariaDB ha un INSTR()
funzione e anche un LOCATE()
funzione. Entrambe le funzioni sembrano fare esattamente la stessa cosa:restituire la posizione di una sottostringa all'interno di una stringa.
Tuttavia, c'è una differenza.
Le differenze
Possiamo vedere la differenza tra queste due funzioni osservando la loro sintassi e un paio di esempi.
Sintassi
La sintassi per INSTR()
:
INSTR(str,substr)
Le due sintassi accettate per LOCATE()
:
LOCATE(substr,str)
LOCATE(substr,str,pos)
Dove str
è la stringa, substr
è la sottostringa da trovare e pos
è la posizione da cui iniziare la ricerca.
La differenza tra le due funzioni può essere riassunta come segue:
- Il
LOCATE()
La funzione accetta gli stessi due argomenti cheINSTR()
accetta, ma in ordine inverso.
- Il
LOCATE()
La funzione accetta un terzo argomento facoltativo per specificare la posizione iniziale per la ricerca. IlINSTR()
la funzione non accetta tale argomento.
Quindi LOCATE()
fornisce funzionalità extra che INSTR()
non fornisce.
Esempio 1:la prima differenza
Ecco un esempio che mostra l'ordine inverso in cui le due funzioni accettano i loro argomenti:
SELECT
INSTR('Disconnect', 'con'),
LOCATE('con', 'Disconnect');
Risultato:
+----------------------------+-----------------------------+ | INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') | +----------------------------+-----------------------------+ | 4 | 4 | +----------------------------+-----------------------------+
Esempio 2:la seconda differenza
Ecco un esempio che mostra la funzionalità extra che LOCATE()
fornisce su INSTR()
:
SELECT
INSTR('My cat is a good cat', 'cat') AS "INSTR()",
LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";
Risultato:
+---------+----------+----------------------------+ | INSTR() | LOCATE() | LOCATE() with 3rd Argument | +---------+----------+----------------------------+ | 4 | 4 | 18 | +---------+----------+----------------------------+
Questo esempio evidenzia il fatto che LOCATE()
La funzione ci fornisce un terzo argomento opzionale. Questo argomento ci consente di specificare una posizione iniziale per la ricerca, il che significa che non siamo limitati alla prima occorrenza nell'intera stringa.