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

MariaDB FIELD() vs. FIND_IN_SET():Was ist der Unterschied?

Zwei ähnliche Funktionen in MariaDB sind FIELD() und FIND_IN_SET() . Auf den ersten Blick scheinen diese dasselbe zu tun, aber es gibt einen Unterschied.

Dieser Artikel befasst sich mit dem Unterschied zwischen diesen beiden Funktionen.

Syntax und Definitionen

Schauen wir uns zunächst die Syntax und Definition jeder Funktion an:

Funktion Syntax Definition
FIELD() FIELD(pattern, str1[,str2,...]) Gibt die Indexposition der Zeichenfolge oder Zahl zurück, die dem angegebenen Muster entspricht.
FIND_IN_SET() FIND_IN_SET(pattern, strlist) Gibt die Indexposition zurück, an der das angegebene Muster in einer Zeichenfolgenliste vorkommt.

Beide Funktionen akzeptieren ein pattern als ihr erstes Argument. Was jedoch als Nächstes kommt, hebt ihre Unterschiede hervor:

  • FIELD() akzeptiert eine oder mehrere Zeichenfolgen, getrennt durch ein Komma.
  • FIND_IN_SET() akzeptiert eine einzelne Zeichenfolgenliste.

Beispiel

Hier ist ein Beispiel, das den Unterschied zwischen diesen beiden Funktionen demonstriert:

SELECT 
    FIELD('bat', 'cat','dog','bat') AS "FIELD()",
    FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";

Ergebnis:

+---------+---------------+
| FIELD() | FIND_IN_SET() |
+---------+---------------+
|       3 |             3 |
+---------+---------------+

Jede Funktion gab das gleiche Ergebnis zurück, aber jede Funktion akzeptierte die Zeichenfolgen in einem anderen Format.

Die für FIELD() bereitgestellten Werte kam als drei separate Argumente, während die Werte für FIND_IN_SET() bereitgestellt wurden kam als einzelne Zeichenfolgenliste (die die einzelnen Werte enthielt).