#mysql #sql #database #sql-like #in-operator
#mysql #sql #База данных #sql-подобный #in-operator
Вопрос:
У меня проблема, и я предполагаю, есть ли лучший способ достичь моей цели. У меня есть этот запрос в Mysql для получения некоторых строк:
SELECT *
FROM table
WHERE field IN ('V','S','G','B')
Что я хотел бы сделать, так это запустить запрос, который извлекает строки, в которых поле имеет значение, ПОДОБНОЕ значениям в списке IN . Я знаю, что тривиальный способ — использовать этот запрос:
SELECT *
FROM table
WHERE field LIKE '%V%' OR field LIKE '%S%' OR
field LIKE '%G%' OR field LIKE '%B%'
Что я хочу знать, так это то, что есть оператор, который делает это или, по крайней мере, если этот оператор не существует, лучший способ написать запрос.
Спасибо всем, кто мне поможет.
Ответ №1:
Поместите значения в таблицу ( Params
), затем используйте
SELECT *
FROM table
WHERE EXISTS (
SELECT *
FROM Params
WHERE table.field LIKE '%' Params.col '%'
);
Подумайте также о том, чтобы поместить подстановочные знаки в значения в Params
таблице.
Комментарии:
1. Но вам нужно
SELECT table.* ... GROUP BY table.PK
устранить повторяющиеся результаты (поэтому запрос строго эквивалентен OP).