V MariaDB, FIND_IN_SET()
je vestavěná řetězcová funkce, která vrací pozici indexu, kde se daný vzor vyskytuje v zadaném seznamu řetězců.
Přijímá dva argumenty. První je vzor, který chcete hledat. Druhým argumentem je řetězec obsahující hodnoty oddělené čárkami, pro které se má porovnat vzor.
Syntaxe
Syntaxe vypadá takto:
FIND_IN_SET(pattern, strlist)
Kde pattern
je vzor, který chcete hledat, a strlist
představuje řetězec hodnot oddělených čárkami, které se mají hledat.
Příklad
Zde je základní příklad:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Výsledek:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
V tomto případě vzor (Green
) se vyskytuje na druhé pozici, a tedy 2
je vráceno.
Žádná shoda
Pokud neexistuje žádná shoda, 0
je vráceno.
Příklad:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Výsledek:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Více shod
Pokud existuje více shod, vrátí se pouze index první z nich:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Výsledek:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Určení vzoru Null
Poskytování null
jako první argument je výsledkem null
se vrací:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Výsledek:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Určení seznamu prázdných řetězců
Poskytování null
jako druhý argument má také za následek null
:
SELECT FIND_IN_SET('Dog', null);
Výsledek:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Prázdný seznam řetězců
Pokud je seznam řetězců prázdný, FIND_IN_SET()
vrátí 0
:
SELECT FIND_IN_SET('Dog', '');
Výsledek:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Čárka ve vzoru
FIND_IN_SET()
nevrací správný výsledek, pokud vzor obsahuje čárku:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Výsledek:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Jeden argument
Předání pouze jednoho argumentu do FIND_IN_SET()
vrátí chybu:
SELECT FIND_IN_SET('Cat');
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Chybí argument
Volání FIND_IN_SET()
bez předání jakýchkoli argumentů dojde k chybě:
SELECT FIND_IN_SET();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'