V MySQL můžete použít FIELD()
funkce, která vrátí pozici daného řetězce nebo čísla v seznamu argumentů. Funkce vrátí index (pozici) prvního argumentu v seznamu následujících argumentů.
Syntaxe vypadá takto:
FIELD(str,str1,str2,str3,...)
Kde str
je položka, kterou chcete najít, a str1,str2,str3,...
je seznam, který prohledáváte.
Zde je příklad:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Výsledek:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
V tomto příkladu je seznam:'Marge', 'Homer', 'Bart'
a hledáme řetězec Homer
v tomto seznamu. A protože Homer
je 2. položka v seznamu argumentů, výsledek je 2
.
Přesná shoda
Všimněte si, že se musí jednat o přesnou shodu, jinak vrátí 0
.
Pokud například vypustíme r
z Homer
, nakonec hledáme Home
místo toho:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Výsledek:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
V tomto případě, i když Homer
obsahuje Home
, nejde o přesnou shodu a výsledek je 0
.
Čísla
FIELD()
funkce funguje také s čísly:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Výsledek:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Když jsou všechny argumenty pro FIELD()
jsou čísla, všechny argumenty jsou porovnávány jako čísla. Pokud jsou všechny řetězce, jsou porovnávány jako řetězce. Pokud jsou smíšené, jsou porovnány jako dvojité.
FIELD()
Funkce je doplněk k ELT()
funkce, která vám umožňuje najít položku seznamu podle její pozice v seznamu.
Viz také Jak vrátit pozici položky seznamu pomocí FIND_IN_SET()
funkce.