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)
Où 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'