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 dieINSTR()
accepteert, maar in omgekeerde volgorde.
- De
LOCATE()
functie accepteert een optioneel derde argument om de startpositie voor de zoekopdracht te specificeren. DeINSTR()
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.