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

Comment FIND_IN_SET() fonctionne dans MariaDB

Dans MariaDB, FIND_IN_SET() est une fonction de chaîne intégrée qui renvoie la position d'index où le modèle donné apparaît dans la liste de chaînes spécifiée.

Il accepte deux arguments. Le premier est le motif que vous souhaitez rechercher. Le deuxième argument est une chaîne contenant des valeurs séparées par des virgules pour lesquelles faire correspondre le modèle.

Syntaxe

La syntaxe ressemble à ceci :

FIND_IN_SET(pattern, strlist)

pattern est le motif que vous souhaitez rechercher, et strlist représente la chaîne de valeurs séparées par des virgules à rechercher.

Exemple

Voici un exemple de base :

SELECT FIND_IN_SET('Green', 'Red,Green,Blue');

Résultat :

+----------------------------------------+
| FIND_IN_SET('Green', 'Red,Green,Blue') |
+----------------------------------------+
|                                      2 |
+----------------------------------------+

Dans ce cas, le motif (Green ) apparaît en deuxième position, et donc 2 est renvoyé.

Aucune correspondance

S'il n'y a pas de correspondance, 0 est renvoyé.

Exemple :

SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');

Résultat :

+---------------------------------------+
| FIND_IN_SET('Nope', 'Red,Green,Blue') |
+---------------------------------------+
|                                     0 |
+---------------------------------------+

Plusieurs correspondances

S'il y a plusieurs correspondances, seul l'index de la première est renvoyé :

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');

Résultat :

+-------------------------------------------+
| FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') |
+-------------------------------------------+
|                                         2 |
+-------------------------------------------+

Spécification d'un motif nul

Fournir null car le premier argument donne null en cours de retour :

SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');

Résultat :

+----------------------------------+
| FIND_IN_SET(null, 'Cat,Dog,Cat') |
+----------------------------------+
|                             NULL |
+----------------------------------+

Spécification d'une liste de chaînes nulles

Fournir null car le deuxième argument donne également null :

SELECT FIND_IN_SET('Dog', null);

Résultat :

+--------------------------+
| FIND_IN_SET('Dog', null) |
+--------------------------+
|                     NULL |
+--------------------------+

Liste de chaînes vide

Si la liste de chaînes est vide, FIND_IN_SET() renvoie 0 :

SELECT FIND_IN_SET('Dog', '');

Résultat :

+------------------------+
| FIND_IN_SET('Dog', '') |
+------------------------+
|                      0 |
+------------------------+

Virgule dans le motif

FIND_IN_SET() ne renvoie pas le bon résultat si le modèle contient une virgule :

SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');

Résultat :

+-----------------------------------------+
| FIND_IN_SET('Green,', 'Red,Green,Blue') |
+-----------------------------------------+
|                                       0 |
+-----------------------------------------+

Argument unique

Passer un seul argument à FIND_IN_SET() renvoie une erreur :

SELECT FIND_IN_SET('Cat');

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'

Argument manquant

Appel de FIND_IN_SET() sans passer d'arguments entraîne une erreur :

SELECT FIND_IN_SET();

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'