MariaDB
 sql >> Database >  >> RDS >> MariaDB

La differenza tra INSTR() e LOCATE() in MariaDB

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 che INSTR() accetta, ma in ordine inverso.
  • Il LOCATE() La funzione accetta un terzo argomento facoltativo per specificare la posizione iniziale per la ricerca. Il INSTR() 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.