使用MYSQL,当我有一个我想要搜索的值列表时,如何在where
子句中包含部分匹配。
我最初的尝试是这样的:
SELECT sampleID, registrationNo, product
FROM Samples
WHERE registrationNo IN ('%23232%', '%45678%', %98764%');
答案 0 :(得分:1)
IN
是简单相等测试的捷径。它不是LIKE
匹配的捷径。
这两个在功能上是相同的:
foo IN ('a', 'b', 'c')
(foo = 'a') OR (foo = 'b') OR (foo = 'c')
用你的wilcards,它是
(foo = '%bar%') OR (foo = '%baz%') etc...
如果您想使用LIKE
- 类型匹配,那么您必须自己写出每个LIKE
操作。
答案 1 :(得分:1)
如果您只有数字(或简单字符串),可以使用REGEXP:
SELECT sampleID, registrationNo, product
FROM Samples
WHERE registrationNo REGEXP '23232|45678|98764';
答案 2 :(得分:0)
你不能在一个声明中做到这一切。你必须像这样分解它:
SELECT sampleID, registrationNo, product FROM Samples
WHERE registrationNo LIKE '%23232%' OR registrationNo LIKE '%45678%' OR registrationNo LIKE '%98764%';