Порядок предложения LIKE в запросе при использовании нескольких терминов - PullRequest
1 голос
/ 27 октября 2011

У меня есть запрос

SELECT * FROM images WHERE tags LIKE '%example%hello%'

Я бы хотел, чтобы база данных выбрала строки с 'example' и 'hello' в столбце 'tags' в любом порядке, например:

Строка с 'hello, test, example', также 'example, hello, test' или любым другим вариантом этого порядка.Возможно ли это даже без использования LIKE?Все строки должны содержать все, что указано с LIKE.

РЕДАКТИРОВАТЬ: например, когда я предоставляю 'example' и 'hello' в запросе, возвращаемые строки должны содержать оба 'example' и 'hello'.

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Вы можете попробовать простое OR для быстрого решения:

SELECT * FROM images WHERE tags LIKE '%example%' OR tags LIKE '%hello%'

EDIT

Чтобы выполнить редактирование, вместо него можно использовать AND:

SELECT * FROM images WHERE tags LIKE '%example%' AND tags LIKE '%hello%'
0 голосов
/ 27 октября 2011

Вы можете использовать FIND_IN_SET:

SELECT tags FROM images WHERE FIND_IN_SET('hello', tags) AND FIND_IN_SET('example', tags)

Однако для этого необходимо, чтобы в тегах не было пробелов после запятой (вам придется заменить на tags или более логических проверок в этом случае). Это может быть быстрее, чем LIKE. Я не уверен.

...