В MySQL можете да използвате FIND_IN_SET() функция за връщане на индекса на даден елемент от списък в рамките на списък с низове (например „item1, item2, item3,...“).
Функцията приема два аргумента; низът за намиране и списъкът за търсене.
Синтаксисът е така:
FIND_IN_SET(str,strlist)
Където str е низът, който търсите, и strlist е списъкът с низове за търсене.
Пример
Ето един пример:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result'; Резултат:
+--------+ | Result | +--------+ | 2 | +--------+
Това връща 2 защото това е позицията на низа Dog в списъка с низове.
Имайте предвид, че се връща само индексът на първото появяване. Така че, ако е имало друго появяване на Dog след това първо ще получим същия резултат:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result'; Резултат:
+--------+ | Result | +--------+ | 2 | +--------+
Няма съвпадения
Когато низът не е намерен, резултат от 0 се връща:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result'; Резултат:
+--------+ | Result | +--------+ | 0 | +--------+
Ами ако първият аргумент съдържа запетая?
Функцията няма да върне положителен резултат, ако първият аргумент съдържа запетая.
Ето един пример:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result'; Резултат:
+--------+ | Result | +--------+ | 0 | +--------+
В този пример може да се очаква, че ще върне положителен резултат (при условие Cat,Dog всъщност е в списъка), но запетаята се използва като разделител в списъка и следователно съвпадението на низовете не работи.
Вижте също как да върнете позицията на аргумент в списък с аргументи, като използвате FIELD() функция.