In MariaDB, FIND_IN_SET()
is een ingebouwde tekenreeksfunctie die de indexpositie retourneert waar het gegeven patroon voorkomt in de opgegeven tekenreekslijst.
Het aanvaardt twee argumenten. De eerste is het patroon waarnaar u wilt zoeken. Het tweede argument is een string die door komma's gescheiden waarden bevat waarmee het patroon overeenkomt.
Syntaxis
De syntaxis gaat als volgt:
FIND_IN_SET(pattern, strlist)
Waar pattern
is het patroon waarnaar u wilt zoeken, en strlist
vertegenwoordigt de reeks door komma's gescheiden waarden om te zoeken.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Resultaat:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
In dit geval is het patroon (Green
) komt voor op de tweede positie, en dus 2
wordt geretourneerd.
Geen overeenkomst
Als er geen overeenkomst is, 0
wordt geretourneerd.
Voorbeeld:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Resultaat:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Meerdere wedstrijden
Als er meerdere overeenkomsten zijn, wordt alleen de index van de eerste geretourneerd:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Resultaat:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Een nulpatroon specificeren
null
opgeven aangezien het eerste argument resulteert in null
wordt geretourneerd:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Resultaat:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Een Null String-lijst specificeren
null
opgeven aangezien het tweede argument ook resulteert in null
:
SELECT FIND_IN_SET('Dog', null);
Resultaat:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Lege tekenreekslijst
Als de tekenreekslijst leeg is, FIND_IN_SET()
retourneert 0
:
SELECT FIND_IN_SET('Dog', '');
Resultaat:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Komma in het patroon
FIND_IN_SET()
geeft niet het juiste resultaat als het patroon een komma bevat:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Resultaat:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Enkel argument
Slechts één argument doorgeven aan FIND_IN_SET()
geeft een fout:
SELECT FIND_IN_SET('Cat');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Ontbrekend argument
Aanroepen van FIND_IN_SET()
zonder het doorgeven van argumenten resulteert in een fout:
SELECT FIND_IN_SET();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'