Dvě podobné funkce v MariaDB jsou FIELD()
a FIND_IN_SET()
. Na první pohled to vypadá, že dělají totéž, ale je tu rozdíl.
Tento článek se zabývá rozdílem mezi těmito dvěma funkcemi.
Syntaxe a definice
Nejprve se podívejme na syntaxi a definici každé funkce:
Funkce | Syntaxe | Definice |
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | Vrátí pozici indexu řetězce nebo čísla odpovídající danému vzoru. |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | Vrátí pozici indexu, kde se daný vzor vyskytuje v seznamu řetězců. |
Obě funkce přijímají pattern
jako jejich první argument. Nicméně to, co přijde dál, zdůrazňuje jejich rozdíly:
FIELD()
přijímá jeden nebo více řetězců oddělených čárkou.FIND_IN_SET()
přijímá seznam s jedním řetězcem.
Příklad
Zde je příklad, který ukazuje rozdíl mezi těmito dvěma funkcemi:
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
Výsledek:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
Každá funkce vrátila stejný výsledek, ale každá funkce přijala řetězce v jiném formátu.
Hodnoty poskytnuté funkci FIELD()
přišly jako tři samostatné argumenty, zatímco hodnoty poskytnuté funkci FIND_IN_SET()
přišel jako seznam s jedním řetězcem (který obsahoval samostatné hodnoty).