MariaDB hat einen INSTR()
Funktion und auch ein LOCATE()
Funktion. Beide Funktionen scheinen genau dasselbe zu tun – geben die Position eines Teilstrings innerhalb eines Strings zurück.
Es gibt jedoch einen Unterschied.
Die Unterschiede
Wir können den Unterschied zwischen diesen beiden Funktionen erkennen, indem wir uns ihre Syntax sowie einige Beispiele ansehen.
Syntax
Die Syntax für INSTR()
:
INSTR(str,substr)
Die beiden akzeptierten Syntaxen für LOCATE()
:
LOCATE(substr,str)
LOCATE(substr,str,pos)
Wobei str
ist die Zeichenfolge, substr
der zu suchende Teilstring ist und pos
ist die Position, um die Suche zu starten.
Der Unterschied zwischen den beiden Funktionen lässt sich wie folgt zusammenfassen:
- Der
LOCATE()
Die Funktion akzeptiert dieselben zwei Argumente wieINSTR()
akzeptiert, aber in umgekehrter Reihenfolge.
- Der
LOCATE()
Die Funktion akzeptiert ein optionales drittes Argument, um die Startposition für die Suche anzugeben. DerINSTR()
Die Funktion akzeptiert ein solches Argument nicht.
Also LOCATE()
bietet zusätzliche Funktionalität, die INSTR()
bietet nicht.
Beispiel 1 – Der erste Unterschied
Hier ist ein Beispiel, das die umgekehrte Reihenfolge zeigt, in der die beiden Funktionen ihre Argumente akzeptieren:
SELECT
INSTR('Disconnect', 'con'),
LOCATE('con', 'Disconnect');
Ergebnis:
+----------------------------+-----------------------------+ | INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') | +----------------------------+-----------------------------+ | 4 | 4 | +----------------------------+-----------------------------+
Beispiel 2 – Der zweite Unterschied
Hier ist ein Beispiel, das die zusätzliche Funktionalität von LOCATE()
zeigt stellt über INSTR()
bereit :
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";
Ergebnis:
+---------+----------+----------------------------+ | INSTR() | LOCATE() | LOCATE() with 3rd Argument | +---------+----------+----------------------------+ | 4 | 4 | 18 | +---------+----------+----------------------------+
Dieses Beispiel hebt die Tatsache hervor, dass LOCATE()
Die Funktion stellt uns ein optionales drittes Argument zur Verfügung. Mit diesem Argument können wir eine Startposition für die Suche angeben, was bedeutet, dass wir nicht nur auf das erste Vorkommen in der gesamten Zeichenfolge beschränkt sind.