MySQL IN with LIKE

Jam*_*s T 3 mysql sql select where

我如何使用IN表?所以我可以在其中使用%?在我的意思是:

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

我已经尝试过:

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

但它给出了错误"操作数应包含1列"

Ned*_*der 9

您可以使用多个LIKE表达式:

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

或者你可以使用正则表达式:

SELECT fields 
  FROM table 
 WHERE age = "50" 
       AND name REGEXP "2010-09-17.*|2010-09-16.*";
Run Code Online (Sandbox Code Playgroud)

或者,巧妙地

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


OMG*_*ies 6

没有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%')
Run Code Online (Sandbox Code Playgroud)

搜索文本时要考虑的另一种方法是全文搜索(FTS):

SELECT fields
  FROM table
 WHERE age = 50
   AND MATCH(name) AGAINST('tim bob nancy john')
Run Code Online (Sandbox Code Playgroud)

...但这需要MyISAM表和全文索引.