MySQL bevat een FIELD()
functie en een FIND_IN_SET()
functie die beide de positie van een tekenreeks in een lijst retourneren. Deze functies werken echter iets anders dan elkaar.
Het belangrijkste verschil tussen deze twee functies is dit:
FIND_IN_SET()
geeft de indexpositie van een string in een stringlijst terug.FIELD()
retourneert de indexpositie van een string binnen een lijst met argumenten.
Dus één functie doorzoekt een stringlijst , en de andere functie zoekt in een lijst met argumenten .
Syntaxis
Laten we eerst eens kijken naar de syntaxis van de twee functies:
VELD()
De syntaxis voor het FIELD()
functie gaat als volgt:
FIELD(str,str1,str2,str3,...)
Dit bestaat uit een eerste argument, gevolgd door meerdere vervolgargumenten. De daaropvolgende argumenten worden doorzocht, hoe veel er ook zijn.
FIND_IN_SET()
De syntaxis voor de FIND_IN_SET()
functie gaat als volgt:
FIND_IN_SET(str,strlist)
Dit bestaat uit een eerste argument, gevolgd door nog een argument. Het tweede argument bevat een lijst met strings die moeten worden doorzocht.
Voorbeelden
VELD()
Hier is een voorbeeld van het FIELD()
functie in actie:
SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | 3 | +--------+
FIND_IN_SET()
En hier is hoe de FIND_IN_SET()
functie zou worden geconstrueerd om hetzelfde resultaat te krijgen:
SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | 3 | +--------+