MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Der Unterschied zwischen INSTR() und LOCATE() in MariaDB

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 wie INSTR() akzeptiert, aber in umgekehrter Reihenfolge.
  • Der LOCATE() Die Funktion akzeptiert ein optionales drittes Argument, um die Startposition für die Suche anzugeben. Der INSTR() 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.