MySQL obsahuje FIELD()
funkce a FIND_IN_SET()
funkce, která obě vrací pozici řetězce v seznamu. Tyto funkce však fungují mírně odlišně.
Hlavní rozdíl mezi těmito dvěma funkcemi je tento:
FIND_IN_SET()
vrátí pozici indexu řetězce v seznamu řetězců.FIELD()
vrátí pozici indexu řetězce v seznamu argumentů.
Jedna funkce tedy prohledává seznam řetězců a druhá funkce prohledává seznam argumentů .
Syntaxe
Nejprve se podívejme na syntaxi těchto dvou funkcí:
FIELD()
Syntaxe pro FIELD()
funkce vypadá takto:
FIELD(str,str1,str2,str3,...)
Skládá se z počátečního argumentu, po kterém následuje několik následujících argumentů. Následné argumenty jsou tím, co se hledá – bez ohledu na to, kolik jich je.
FIND_IN_SET()
Syntaxe pro FIND_IN_SET()
funkce vypadá takto:
FIND_IN_SET(str,strlist)
Skládá se z počátečního argumentu, po kterém následuje ještě jeden argument. Druhý argument obsahuje seznam řetězců, které mají být prohledány.
Příklady
FIELD()
Zde je příklad FIELD()
funkce v akci:
SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
FIND_IN_SET()
A takto:FIND_IN_SET()
funkce by byla zkonstruována tak, aby získala stejný výsledek:
SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Výsledek:
+--------+ | Result | +--------+ | 3 | +--------+