У меня есть запрос
SELECT * FROM images WHERE tags LIKE '%example%hello%'
Я хотел бы, чтобы база данных выбирала строки, которые имеют «пример» и «привет» в столбце «теги» в любом порядке, как в:
Строка с «привет, тест, пример», также «пример, привет, тест» или любые другие варианты этого порядка. Возможно ли это, даже без использования LIKE? Строки должны содержать все, что указано в LIKE.
EDIT: Например, когда я предоставляю «пример» и «привет» в запросе, возвращаемые строки должны содержать как «пример», так и «привет».
Вы можете попробовать простой OR
для быстрого решения:
SELECT * FROM images WHERE tags LIKE '%example%' OR tags LIKE '%hello%'
РЕДАКТИРОВАТЬ
Чтобы обратиться к редактированию, вы можете использовать AND
вместо:
SELECT * FROM images WHERE tags LIKE '%example%' AND tags LIKE '%hello%'
Вы можете использовать FIND_IN_SET
:
SELECT tags FROM images WHERE FIND_IN_SET('hello', tags) AND FIND_IN_SET('example', tags)
Однако это требует, чтобы теги не имели пробелов после запятой (в этом случае вам придется выполнять замену в tags
или более логических проверок). Это может быть быстрее, чем LIKE
. Я не уверен.