I MySQL kan du bruge FIELD()
funktion til at returnere positionen af en given streng eller et givet tal i en liste af argumenter. Funktionen returnerer indekset (positionen) for det første argument på listen over efterfølgende argumenter.
Syntaksen ser sådan ud:
FIELD(str,str1,str2,str3,...)
Hvor str
er det element, du vil finde, og str1,str2,str3,...
er den liste, du søger igennem.
Her er et eksempel:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Resultat:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
I dette eksempel er listen:'Marge', 'Homer', 'Bart'
og vi søger efter strengen Homer
inden for den liste. Og fordi Homer
er det 2. element på listen over argumenter, er resultatet 2
.
Eksakt match
Bemærk, at det skal være et nøjagtigt match, ellers vil det returnere 0
.
For eksempel, hvis vi dropper r
fra Homer
, ender vi med at søge efter Home
i stedet:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Resultat:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
I dette tilfælde, selvom Homer
indeholder Home
, det er ikke et eksakt match, og resultatet er 0
.
Numre
FIELD()
funktion fungerer også med tal:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Resultat:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Når alle argumenter til FIELD()
er tal, sammenlignes alle argumenter som tal. Hvis alle er strenge, sammenlignes de som strenge. Hvis de er blandede, sammenlignes de som dobbelte.
FIELD()
funktion er et supplement til ELT()
funktion, som giver dig mulighed for at finde et listeelement efter dets placering på listen.
Se også, hvordan du returnerer positionen for et listeelement ved hjælp af FIND_IN_SET()
funktion.