I MariaDB, FIELD()
är en inbyggd strängfunktion som returnerar indexpositionen för strängen eller numret som matchar det angivna mönstret.
Den accepterar två eller flera argument. Det första är mönstret du vill söka efter. Alla efterföljande argument är de strängar eller siffror som mönstret ska matcha mot.
Syntax
Syntaxen ser ut så här:
FIELD(pattern, str1[,str2,...])
Där pattern
är mönstret och str1[, str2,…]
representerar strängarna eller siffrorna.
Exempel
Här är ett grundläggande exempel:
SELECT FIELD('Green', 'Red', 'Green', 'Blue');
Resultat:
+----------------------------------------+ | FIELD('Green', 'Red', 'Green', 'Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
I det här fallet, mönstret (Green
) förekommer vid den andra positionen, och så 2
returneras.
Skaftkänslighet
FIELD()
funktion behandlar strängar som skiftlägesokänsliga.
Exempel:
SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');
Resultat:
+---------------------------------------+ | FIELD('BLUE', 'Red', 'Green', 'Blue') | +---------------------------------------+ | 3 | +---------------------------------------+
Ingen match
Om det inte finns någon matchning, 0
returneras.
Exempel:
SELECT FIELD('Go', 'Red', 'Green', 'Blue');
Resultat:
+-------------------------------------+ | FIELD('Go', 'Red', 'Green', 'Blue') | +-------------------------------------+ | 0 | +-------------------------------------+
Siffror
När alla argument är tal, behandlas de som tal. Annars behandlas de som dubbelgångar.
Exempel:
SELECT FIELD(3, 40, 2, 18, 10, 3);
Resultat:
+----------------------------+ | FIELD(3, 40, 2, 18, 10, 3) | +----------------------------+ | 5 | +----------------------------+
Flera matchningar
Om det finns flera matchningar av mönstret, returneras endast indexet för det första:
SELECT FIELD(3, 40, 3, 18, 10, 3);
Resultat:
+----------------------------+ | FIELD(3, 40, 3, 18, 10, 3) | +----------------------------+ | 2 | +----------------------------+
Ange ett nollmönster
Tillhandahåller null
eftersom det första argumentet resulterar i 0
:
SELECT FIELD(null, 1, 2, 3);
Resultat:
+----------------------+ | FIELD(null, 1, 2, 3) | +----------------------+ | 0 | +----------------------+
Ge bara ett strängargument
Att ange ett enda argument för att matcha är giltigt:
SELECT FIELD(205, 205);
Resultat:
+-----------------+ | FIELD(205, 205) | +-----------------+ | 1 | +-----------------+
Enstaka argument
Men skickar bara ett argument till FIELD()
returnerar ett fel:
SELECT FIELD(205);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'
Argument saknas
Anropar FIELD()
utan att skicka några argument resulterar i ett fel:
SELECT FIELD();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'