Mysql
 sql >> Datenbank >  >> RDS >> Mysql

3 Möglichkeiten, die Position eines Teilstrings innerhalb eines Strings in MySQL zu finden

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 |
+--------+