«Слияние» и ПОДОБНЫЙ оператор в Mysql

#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).