В 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()
функция.