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'