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

Forskellen mellem INSTR() vs LOCATE() i MariaDB

MariaDB har en INSTR() funktion og også en LOCATE() fungere. Begge funktioner ser ud til at gøre nøjagtig det samme – returner positionen af ​​en understreng i en streng.

Der er dog en forskel.

Forskellene

Vi kan se forskellen mellem disse to funktioner ved at se på deres syntaks samt et par eksempler.

Syntaks

Syntaksen for INSTR() :

INSTR(str,substr)

De to accepterede syntakser for LOCATE() :

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

Hvor str er strengen, substr er den understreng, der skal findes, og pos er positionen til at starte søgningen.

Forskellen mellem de to funktioner kan opsummeres som følger:

  • LOCATE() funktion accepterer de samme to argumenter som INSTR() accepterer, men i omvendt rækkefølge.
  • LOCATE() funktion accepterer et valgfrit tredje argument for at angive startpositionen for søgningen. INSTR() funktion accepterer ikke et sådant argument.

LOCATE() giver ekstra funktionalitet som INSTR() giver ikke.

Eksempel 1 – Den første forskel

Her er et eksempel, der viser den omvendte rækkefølge, hvori de to funktioner accepterer deres argumenter:

SELECT 
    INSTR('Disconnect', 'con'),
    LOCATE('con', 'Disconnect');

Resultat:

+----------------------------+-----------------------------+
| INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') |
+----------------------------+-----------------------------+
|                          4 |                           4 |
+----------------------------+-----------------------------+

Eksempel 2 – Den anden forskel

Her er et eksempel, der viser den ekstra funktionalitet, som LOCATE() giver over 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";

Resultat:

+---------+----------+----------------------------+
| INSTR() | LOCATE() | LOCATE() with 3rd Argument |
+---------+----------+----------------------------+
|       4 |        4 |                         18 |
+---------+----------+----------------------------+

Dette eksempel fremhæver det faktum, at LOCATE() funktion giver os et valgfrit tredje argument. Dette argument giver os mulighed for at angive en startposition for søgningen, hvilket betyder, at vi ikke er begrænset til kun den første forekomst i hele strengen.


  1. Forstå Pivot Operator i SQL

  2. Sådan ser du den faktiske Oracle SQL-sætning, der udføres

  3. Opret en DML Trigger i SQL Server

  4. Sådan bruges EXECUTE FORMAT ... BRUG i postgres-funktionen