MySQL IN с LIKE

Как использовать таблицу IN с подобным? Чтобы я мог использовать% в них? Я имею в виду:

SELECT fields FROM table WHERE age = "50" AND name IN ("tim", "bob", "nancy", "john"); 

Я уже пробовал:

 SELECT fields FROM table WHERE age = "50" AND name LIKE ("2010-09-17%", "2010-09-16%") 

Но он дал ошибку «Операнд должен содержать 1 столбец»,

Вы можете использовать несколько выражений LIKE:

 SELECT fields FROM table WHERE age = "50" AND ( name LIKE "2010-09-17%" OR name LIKE "2010-09-16%" ); 

или вы можете использовать регулярное выражение:

 SELECT fields FROM table WHERE age = "50" AND name REGEXP "2010-09-17.*|2010-09-16.*"; 

или, умно

 SELECT fields FROM table WHERE age = "50" AND name REGEXP "2010-09-1(6|7).*"; 

Не существует комбинации предложений LIKE и IN. Это либо один, либо другой синтаксис:

 SELECT fields FROM table WHERE age = 50 AND ( name IN ('tim', 'bob', 'nancy', 'john') OR name LIKE '2010-09-17%' OR name LIKE '2010-09-16%') 

Альтернативой, которую следует учитывать при поиске текста, является полнотекстовый поиск (FTS) :

 SELECT fields FROM table WHERE age = 50 AND MATCH(name) AGAINST('tim bob nancy john') 

… но для этого нужны таблицы MyISAM и полнотекстовое индексирование.

Поместите значения в таблицу ( MyParamsTable ) и используйте LIKE в состоянии JOIN например, что-то вроде:

 SELECT fields FROM table INNER JOIN MyParamsTable ON table.name LIKE CONCAT(MyParamsTable.name, "%") WHERE age = "50";