V MySQL můžete použít FIND_IN_SET() funkce, která vrátí index dané položky seznamu v seznamu řetězců (například „položka1, položka2, položka3,…“).
Funkce má dva argumenty; řetězec, který se má najít, a seznam, který se má hledat.
Syntaxe vypadá takto:
FIND_IN_SET(str,strlist)
Kde str je řetězec, který hledáte, a strlist je seznam řetězců k prohledávání.
Příklad
Zde je příklad:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result'; Výsledek:
+--------+ | Result | +--------+ | 2 | +--------+
To vrátí 2 protože to je pozice řetězce Dog v seznamu řetězců.
Všimněte si, že je vrácen pouze index prvního výskytu. Pokud tedy došlo k dalšímu výskytu Dog po tomto prvním bychom stále dostali stejný výsledek:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result'; Výsledek:
+--------+ | Result | +--------+ | 2 | +--------+
Žádné shody
Když řetězec není nalezen, výsledek 0 je vráceno:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result'; Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
Co když první argument obsahuje čárku?
Funkce nevrátí kladný výsledek, pokud první argument obsahuje čárku.
Zde je příklad:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result'; Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
V tomto příkladu by se dalo očekávat, že vrátí kladný výsledek (s ohledem na Cat,Dog je ve skutečnosti v seznamu), čárka se však v seznamu používá jako oddělovač, a proto shoda řetězců nefunguje.
Viz také Jak vrátit pozici argumentu v seznamu argumentů pomocí FIELD() funkce.