MySQL hat eine Reihe von String-Funktionen, die die Position eines Teilstrings innerhalb eines Strings zurückgeben. Genauer gesagt geben sie die Position des ersten Vorkommens innerhalb des Strings zurück (oder das erste Vorkommen nach einem bestimmten Startpunkt).
Die Funktionen, auf die ich mich beziehe, sind wie folgt:
INSTR()
LOCATE()
POSITION()
Nachfolgend finden Sie eine Übersicht über jeden.
INSTR()
Der INSTR()
Funktion gibt das erste Vorkommen eines Teilstrings innerhalb eines Strings zurück.
Hier ist die Syntax:
INSTR(str,substr)
Wobei str
die Zeichenfolge ist, die Sie suchen möchten, und substr
ist die Teilzeichenfolge, nach der Sie suchen.
Beispiel
SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;
Ergebnis:
+--------+ | Result | +--------+ | 10 | +--------+
In diesem Fall die Zeichenfolge dogs
beginnt bei Position 10.
Wenn der Teilstring nicht gefunden wird, ein Ergebnis von 0
wird zurückgegeben:
SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;
Ergebnis:
+--------+ | Result | +--------+ | 0 | +--------+
LOCATE()
Das LOCATE()
Die Funktion funktioniert ähnlich, abgesehen von ein paar Unterschieden; die Argumente sind in einer anderen Reihenfolge, und Sie können einen optionalen dritten Parameter angeben, um anzugeben, wo die Suche beginnen soll.
Daher können Sie es auf eine der folgenden Arten verwenden:
LOCATE(substr,str) LOCATE(substr,str,pos)
Die erste Syntax ist genauso wie INTSR()
Syntax, außer dass str
und substr
werden vertauscht.
Die zweite Syntax fügt das optionale pos
hinzu Argument, mit dem Sie eine Position angeben können, an der die Suche beginnen soll.
Beispiel der ersten Syntax
Hier ist ein Beispiel mit der ersten Syntax:
SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;
Ergebnis:
+--------+ | Result | +--------+ | 10 | +--------+
Beispiel für zweite Syntax
Hier ist ein Beispiel, in dem wir eine Startposition angeben, um mit der Suche zu beginnen:
SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;
Ergebnis:
+--------+ | Result | +--------+ | 7 | +--------+
Wir können sehen, dass die Zeichenfolge cat
kann an Position 1 gefunden werden, aber wir haben 6
angegeben als Ausgangsposition. Daher war die Position des nächsten Vorkommens dieser Zeichenfolge diejenige, die zurückgegeben wurde.
Wie beim INSTR()
Funktion, wenn der Teilstring nicht gefunden wird, 0
zurückgegeben wird.
POSITION()
Die POSITION()
Funktion ist ein Synonym für LOCATE()
, aber mit einer etwas anderen Syntax.
Hier ist die Syntax:
POSITION(substr IN str)
Dies ist ein Synonym für Folgendes:
LOCATE(substr,str)
Wir könnten also eines der vorherigen Beispiele wie folgt umschreiben:
SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;
Ergebnis:
+--------+ | Result | +--------+ | 10 | +--------+