sql >> Database >  >> RDS >> MariaDB

MariaDB FIELD() vs FIND_IN_SET():wat is het verschil?

Twee vergelijkbare functies in MariaDB zijn FIELD() en FIND_IN_SET() . Op het eerste gezicht lijken deze hetzelfde te doen, maar er is een verschil.

Dit artikel gaat in op het verschil tussen deze twee functies.

Syntaxis en definities

Laten we eerst eens kijken naar de syntaxis en definitie van elke functie:

Functie Syntaxis Definitie
FIELD() FIELD(pattern, str1[,str2,...]) Retourneert de indexpositie van de tekenreeks of het nummer dat overeenkomt met het gegeven patroon.
FIND_IN_SET() FIND_IN_SET(pattern, strlist) Retourneert de indexpositie waar het gegeven patroon voorkomt in een tekenreekslijst.

Beide functies accepteren een pattern als hun eerste argument. Het is echter wat daarna komt dat hun verschillen benadrukt:

  • FIELD() accepteert een of meer tekenreeksen, gescheiden door een komma.
  • FIND_IN_SET() accepteert een enkele tekenreekslijst.

Voorbeeld

Hier is een voorbeeld dat het verschil tussen deze twee functies laat zien:

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

Resultaat:

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

Elke functie retourneerde hetzelfde resultaat, maar elke functie accepteerde de tekenreeksen in een ander formaat.

De waarden geleverd aan FIELD() kwamen als drie afzonderlijke argumenten, terwijl de waarden die werden verstrekt aan FIND_IN_SET() kwam als een enkele stringlijst (die de afzonderlijke waarden bevatte).


  1. MariaDB LENGTH() vs LENGTHB():wat is het verschil?

  2. Twee PLSQL-statements met begin en einde, afzonderlijk goed werken, maar niet samen?

  3. CONVERT_TZ() Voorbeelden – MySQL

  4. MySQL-zelfstudie:MySQL IN-instructie (geavanceerd)