MySQL включва FIELD()
функция и FIND_IN_SET()
функция, която и двете връщат позицията на низ в списък. Тези функции обаче работят малко по-различно една спрямо друга.
Основната разлика между тези две функции е следната:
FIND_IN_SET()
връща индексната позиция на низ в списък с низове.FIELD()
връща индексната позиция на низ в списък с аргументи.
Така една функция търси списък с низове , а другата функция търси списък с аргументи .
Синтаксис
Първо нека разгледаме синтаксиса на двете функции:
ПОЛЕ()
Синтаксисът за FIELD()
функцията е така:
FIELD(str,str1,str2,str3,...)
Това се състои от първоначален аргумент, последван от множество последващи аргументи. Следващите аргументи са това, което се търси – колкото и да има много от тях.
FIND_IN_SET()
Синтаксисът за FIND_IN_SET()
функцията е така:
FIND_IN_SET(str,strlist)
Това се състои от начален аргумент, последван от още един аргумент. Вторият аргумент съдържа списък с низове, които трябва да се търсят.
Примери
ПОЛЕ()
Ето пример за FIELD()
функция в действие:
SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | 3 | +--------+
FIND_IN_SET()
И ето как FIND_IN_SET()
функция ще бъде конструирана за получаване на същия резултат:
SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | 3 | +--------+