MySQL inkluderar en FIELD()
funktion och en FIND_IN_SET()
funktion som båda returnerar positionen för en sträng i en lista. Dessa funktioner fungerar dock lite annorlunda än varandra.
Huvudskillnaden mellan dessa två funktioner är denna:
FIND_IN_SET()
returnerar indexpositionen för en sträng i en stränglista.FIELD()
returnerar indexpositionen för en sträng i en lista med argument.
Så en funktion söker efter en stränglista , och den andra funktionen söker efter en lista med argument .
Syntax
Låt oss först titta på syntaxen för de två funktionerna:
FIELD()
Syntaxen för FIELD()
funktionen går så här:
FIELD(str,str1,str2,str3,...)
Detta består av ett initialt argument, följt av flera efterföljande argument. Det är de efterföljande argumenten som söks efter – hur många som helst.
FIND_IN_SET()
Syntaxen för FIND_IN_SET()
funktionen går så här:
FIND_IN_SET(str,strlist)
Detta består av ett första argument, följt av ytterligare ett argument. Det andra argumentet innehåller en lista med strängar som ska sökas i.
Exempel
FIELD()
Här är ett exempel på FIELD()
funktion i aktion:
SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
FIND_IN_SET()
Och här är hur FIND_IN_SET()
funktion skulle konstrueras för att få samma resultat:
SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+