我如何使用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列”
答案 0 :(得分:9)
您可以使用多个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).*";
答案 1 :(得分:5)
没有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%')
搜索文字时要考虑的另一种方法是Full Text Search (FTS):
SELECT fields
FROM table
WHERE age = 50
AND MATCH(name) AGAINST('tim bob nancy john')
...但这需要MyISAM表和全文索引。
答案 2 :(得分:1)
将值放在表格中MyParamsTable
)并在LIKE
条件下使用JOIN
,例如类似的东西:
SELECT fields
FROM table
INNER JOIN MyParamsTable
ON table.name LIKE CONCAT(MyParamsTable.name, "%")
WHERE age = "50";