V MariaDB FIELD()
je vestavěná řetězcová funkce, která vrací pozici indexu řetězce nebo čísla odpovídající zadanému vzoru.
Přijímá dva nebo více argumentů. První je vzor, který chcete hledat. Všechny následující argumenty jsou řetězce nebo čísla, se kterými se má vzor porovnat.
Syntaxe
Syntaxe vypadá takto:
FIELD(pattern, str1[,str2,...])
Kde pattern
je vzor a str1[, str2,…]
představuje řetězce nebo čísla.
Příklad
Zde je základní příklad:
SELECT FIELD('Green', 'Red', 'Green', 'Blue');
Výsledek:
+----------------------------------------+ | FIELD('Green', 'Red', 'Green', 'Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
V tomto případě vzor (Green
) se vyskytuje na druhé pozici, a tedy 2
je vráceno.
Rozlišovat malá a velká písmena
FIELD()
funkce zachází s řetězci bez ohledu na velikost písmen.
Příklad:
SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');
Výsledek:
+---------------------------------------+ | FIELD('BLUE', 'Red', 'Green', 'Blue') | +---------------------------------------+ | 3 | +---------------------------------------+
Žádná shoda
Pokud neexistuje žádná shoda, 0
je vráceno.
Příklad:
SELECT FIELD('Go', 'Red', 'Green', 'Blue');
Výsledek:
+-------------------------------------+ | FIELD('Go', 'Red', 'Green', 'Blue') | +-------------------------------------+ | 0 | +-------------------------------------+
Čísla
Když jsou všechny argumenty čísla, jsou považovány za čísla. Jinak se s nimi zachází jako s dvojníky.
Příklad:
SELECT FIELD(3, 40, 2, 18, 10, 3);
Výsledek:
+----------------------------+ | FIELD(3, 40, 2, 18, 10, 3) | +----------------------------+ | 5 | +----------------------------+
Více shod
Pokud existuje více shod vzoru, vrátí se pouze index prvního:
SELECT FIELD(3, 40, 3, 18, 10, 3);
Výsledek:
+----------------------------+ | FIELD(3, 40, 3, 18, 10, 3) | +----------------------------+ | 2 | +----------------------------+
Určení vzoru Null
Poskytování null
jako první argument je výsledkem 0
:
SELECT FIELD(null, 1, 2, 3);
Výsledek:
+----------------------+ | FIELD(null, 1, 2, 3) | +----------------------+ | 0 | +----------------------+
Poskytování pouze jednoho řetězcového argumentu
Zadání jediného argumentu ke shodě je platné:
SELECT FIELD(205, 205);
Výsledek:
+-----------------+ | FIELD(205, 205) | +-----------------+ | 1 | +-----------------+
Jeden argument
Ale předání pouze jednoho argumentu do FIELD()
vrátí chybu:
SELECT FIELD(205);
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'
Chybí argument
Volání FIELD()
bez předání jakýchkoli argumentů dojde k chybě:
SELECT FIELD();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'