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

Der Unterschied zwischen FIELD() und FIND_IN_SET() in MySQL

MySQL enthält ein FIELD() Funktion und ein FIND_IN_SET() Funktion, die beide die Position eines Strings innerhalb einer Liste zurückgeben. Diese Funktionen funktionieren jedoch etwas unterschiedlich.

Der Hauptunterschied zwischen diesen beiden Funktionen ist folgender:

  • FIND_IN_SET() gibt die Indexposition eines Strings innerhalb einer Stringliste zurück.
  • FIELD() gibt die Indexposition eines Strings innerhalb einer Liste von Argumenten zurück.

Eine Funktion durchsucht also eine String-Liste , und die andere Funktion durchsucht eine Liste von Argumenten .

Syntax

Schauen wir uns zunächst die Syntax der beiden Funktionen an:

FELD()

Die Syntax für FIELD() Funktion geht so:

FIELD(str,str1,str2,str3,...)

Diese besteht aus einem Anfangsargument, gefolgt von mehreren nachfolgenden Argumenten. Die nachfolgenden Argumente werden gesucht – egal wie viele davon es gibt.

FIND_IN_SET()

Die Syntax für FIND_IN_SET() Funktion geht so:

FIND_IN_SET(str,strlist)

Diese besteht aus einem Anfangsargument, gefolgt von einem weiteren Argument. Das zweite Argument enthält eine Liste von zu durchsuchenden Zeichenketten.

Beispiele

FELD()

Hier ist ein Beispiel für FIELD() Funktion in Aktion:

SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      3 |
+--------+

FIND_IN_SET()

Und so funktioniert der FIND_IN_SET() Funktion konstruiert werden, um das gleiche Ergebnis zu erhalten:

SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      3 |
+--------+