Как проверить, существует ли определенная строка в поле MySQL, разделенном запятыми

#mysql #sql #sqlalchemy

Вопрос:

У меня есть поле авторов MySQL в строке, разделенной запятыми, и я хочу найти в нем точное совпадение. Например, я хочу вернуть все строки, в которых «Джефф» является соавтором, в следующей таблице:

тест соавторы
1 джефф,бет,бен,Джим
2 бет,Джеффри,Бенджамин, джиммоти
3 бен,бет,Джим,Джефф
4 ben,beth,jeffrey

В этом примере я хотел бы вернуть только строки 1 и 3, поэтому игнорирую «джеффри», в подстроке которого есть «джефф».

В идеале я бы вернул это с помощью синтаксиса SQLAlchemy .filter, так как я использую ORM, но SQL-запрос также действительно помог бы мне.

Комментарии:

1. возможно, полезно : docs.sqlalchemy.org/en/14/core/…

Ответ №1:

В MySQL есть функция FIND_IN_SET ().

SELECT * FROM authors WHERE FIND_IN_SET('jeff', co_authors) > 0;

Надеюсь, это вам поможет.