I MySQL kan du använda FIELD()
funktion för att returnera positionen för en given sträng eller siffra i en lista med argument. Funktionen returnerar indexet (positionen) för det första argumentet i listan över efterföljande argument.
Syntaxen ser ut så här:
FIELD(str,str1,str2,str3,...)
Där str
är objektet du vill hitta, och str1,str2,str3,...
är listan du söker igenom.
Här är ett exempel:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Resultat:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
I det här exemplet är listan:'Marge', 'Homer', 'Bart'
och vi söker efter strängen Homer
inom den listan. Och eftersom Homer
är det andra objektet i listan över argument, resultatet är 2
.
Exakt matchning
Observera att det måste vara en exakt matchning, annars returnerar den 0
.
Till exempel, om vi släpper r
från Homer
, slutar vi med att söka efter Home
istället:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Resultat:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
I det här fallet, även om Homer
innehåller Home
, det är inte en exakt matchning och resultatet är 0
.
Siffror
FIELD()
Funktionen fungerar även med siffror:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Resultat:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
När alla argument till FIELD()
är tal, jämförs alla argument som tal. Om alla är strängar jämförs de som strängar. Om de är blandade jämförs de som dubbelt.
FIELD()
funktionen är ett komplement till ELT()
funktion, som låter dig hitta ett listobjekt efter dess position i listan.
Se även Hur du återställer positionen för ett listobjekt med FIND_IN_SET()
funktion.