I MariaDB, FIND_IN_SET()
är en inbyggd strängfunktion som returnerar indexpositionen där det givna mönstret förekommer i den angivna stränglistan.
Den godtar två argument. Det första är mönstret du vill söka efter. Det andra argumentet är en sträng som innehåller kommaseparerade värden som mönstret ska matchas mot.
Syntax
Syntaxen ser ut så här:
FIND_IN_SET(pattern, strlist)
Där pattern
är mönstret du vill söka efter, och strlist
representerar strängen av kommaseparerade värden som ska sökas.
Exempel
Här är ett grundläggande exempel:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Resultat:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
I det här fallet, mönstret (Green
) förekommer vid den andra positionen, och så 2
returneras.
Ingen match
Om det inte finns någon matchning, 0
returneras.
Exempel:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Resultat:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Flera matchningar
Om det finns flera matchningar, returneras endast indexet för den första:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Resultat:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Ange ett nollmönster
Tillhandahåller null
eftersom det första argumentet resulterar i null
returneras:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Resultat:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Ange en nollsträngslista
Tillhandahåller null
eftersom det andra argumentet också resulterar i null
:
SELECT FIND_IN_SET('Dog', null);
Resultat:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Töm stränglista
Om stränglistan är tom, FIND_IN_SET()
returnerar 0
:
SELECT FIND_IN_SET('Dog', '');
Resultat:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Komma i mönstret
FIND_IN_SET()
returnerar inte rätt resultat om mönstret innehåller ett kommatecken:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Resultat:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Enstaka argument
Skickar bara ett argument till FIND_IN_SET()
returnerar ett fel:
SELECT FIND_IN_SET('Cat');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Argument saknas
Anropar FIND_IN_SET()
utan att skicka några argument resulterar i ett fel:
SELECT FIND_IN_SET();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'