sql >> Database >  >> RDS >> MariaDB

Het verschil tussen INSTR() en LOCATE() in MariaDB

MariaDB heeft een INSTR() functie en ook een LOCATE() functie. Beide functies lijken precies hetzelfde te doen - de positie van een subtekenreeks binnen een tekenreeks retourneren.

Er is echter een verschil.

De verschillen

We kunnen het verschil tussen deze twee functies zien door naar hun syntaxis te kijken, evenals een paar voorbeelden.

Syntaxis

De syntaxis voor INSTR() :

INSTR(str,substr)

De twee geaccepteerde syntaxis voor LOCATE() :

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

Waar str is de string, substr is de substring die moet worden gevonden, en pos is de positie om de zoekopdracht te starten.

Het verschil tussen de twee functies kan als volgt worden samengevat:

  • De LOCATE() functie accepteert dezelfde twee argumenten die INSTR() accepteert, maar in omgekeerde volgorde.
  • De LOCATE() functie accepteert een optioneel derde argument om de startpositie voor de zoekopdracht te specificeren. De INSTR() functie accepteert een dergelijk argument niet.

Dus LOCATE() biedt extra functionaliteit die INSTR() biedt niet.

Voorbeeld 1 – Het eerste verschil

Hier is een voorbeeld dat de omgekeerde volgorde laat zien waarin de twee functies hun argumenten accepteren:

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

Resultaat:

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

Voorbeeld 2 – Het tweede verschil

Hier is een voorbeeld dat de extra functionaliteit laat zien die LOCATE() biedt meer dan 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";

Resultaat:

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

Dit voorbeeld benadrukt het feit dat de LOCATE() functie geeft ons een optioneel derde argument. Met dit argument kunnen we een startpositie voor de zoekopdracht specificeren, wat betekent dat we niet beperkt zijn tot alleen de eerste instantie in de hele string.


  1. Hoe de primaire sleutel van de MySQL-tabel automatisch te laten toenemen met een of ander voorvoegsel?

  2. MySQL IF()-functie uitgelegd

  3. Forceer Oracle om TOP N-rijen terug te geven met SKIP LOCKED

  4. U kunt nu toegang gebruiken met Microsoft Azure MFA!