У меня вопрос о поиске в MySQL. Я не мог найти ответ в течение длительного времени.
Я использую symfony 3.1, и у меня есть следующая ситуация: у меня есть столбец site_languages
(longtext, (DC2Type: simple_array)) в sql со значениями (например) "0,1,7", "11,15,27" и т.д.
Поэтому мой вопрос: как я могу выбрать строку по site_languages
которые включают в массив значение поиска?
Я попробовал использовать LIKE, проверил REGEXP, но, например, если мне нужен поиск по значению "1", он также вернет строки с 11/51/111 и т.д. Я думал о сохранении значений типа "[1], [15]" Но я думаю, что для этого существует более легкое и правильное решение?
Если вы хотите решить эту проблему с помощью регулярного выражения, вы можете использовать это регулярное выражение (^|,)1(,|$)
для соответствия 1, которому предшествует запятая, а затем запятая ИЛИ ей может предшествовать 1 к началу строки или конца строки.
Вы должны рассмотреть нормализацию своей таблицы БД, но если вы настаиваете на ее сохранении, вы можете сохранить ее как json, затем получить все строки и выполнить итерацию (плохая идея), но это нормально, если это короткая таблица