I MariaDB, FIND_IN_SET()
er en indbygget strengfunktion, der returnerer indekspositionen, hvor det givne mønster forekommer i den angivne strengliste.
Den accepterer to argumenter. Det første er det mønster, du vil søge efter. Det andet argument er en streng, der indeholder kommaseparerede værdier, som mønsteret skal matches med.
Syntaks
Syntaksen ser sådan ud:
FIND_IN_SET(pattern, strlist)
Hvor pattern
er det mønster, du vil søge efter, og strlist
repræsenterer strengen af kommaseparerede værdier, der skal søges i.
Eksempel
Her er et grundlæggende eksempel:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Resultat:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
I dette tilfælde er mønsteret (Green
) forekommer på den anden position, og så 2
er returneret.
Ingen match
Hvis der ikke er noget match, 0
er returneret.
Eksempel:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Resultat:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Flere match
Hvis der er flere matches, returneres kun indekset for det første:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Resultat:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Angivelse af et nulmønster
Giver null
da det første argument resulterer i null
bliver returneret:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Resultat:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Angivelse af en nulstrengliste
Giver null
da det andet argument også resulterer i null
:
SELECT FIND_IN_SET('Dog', null);
Resultat:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Tøm strengliste
Hvis strenglisten er tom, FIND_IN_SET()
returnerer 0
:
SELECT FIND_IN_SET('Dog', '');
Resultat:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Komma i mønsteret
FIND_IN_SET()
returnerer ikke det korrekte resultat, hvis mønsteret indeholder et komma:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Resultat:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Enkelt argument
Sender kun ét argument til FIND_IN_SET()
returnerer en fejl:
SELECT FIND_IN_SET('Cat');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Manglende argument
Kalder FIND_IN_SET()
uden at sende nogen argumenter resulterer det i en fejl:
SELECT FIND_IN_SET();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'