MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB FIELD() vs FIND_IN_SET() :Quelle est la différence ?

Deux fonctions similaires dans MariaDB sont FIELD() et FIND_IN_SET() . À première vue, ils semblent faire la même chose, mais il y a une différence.

Cet article examine la différence entre ces deux fonctions.

Syntaxe et définitions

Voyons d'abord la syntaxe et la définition de chaque fonction :

Fonction Syntaxe Définition
FIELD() FIELD(pattern, str1[,str2,...]) Renvoie la position d'index de la chaîne ou du nombre correspondant au modèle donné.
FIND_IN_SET() FIND_IN_SET(pattern, strlist) Renvoie la position d'index où le motif donné apparaît dans une liste de chaînes.

Les deux fonctions acceptent un pattern comme premier argument. Cependant, c'est ce qui vient ensuite qui met en évidence leurs différences :

  • FIELD() accepte une ou plusieurs chaînes, séparées par une virgule.
  • FIND_IN_SET() accepte une seule liste de chaînes.

Exemple

Voici un exemple qui illustre la différence entre ces deux fonctions :

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

Résultat :

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

Chaque fonction a renvoyé le même résultat, mais chaque fonction a accepté les chaînes dans un format différent.

Les valeurs fournies à FIELD() sont venus sous la forme de trois arguments distincts, alors que les valeurs fournies à FIND_IN_SET() est venu comme une seule liste de chaînes (qui contenait les valeurs séparées).