列表中的MySQL部分匹配,例如IN('%sdfsdf%','%sdfhsdfh%')

时间:2014-07-29 18:15:09

标签: mysql

使用MYSQL,当我有一个我想要搜索的值列表时,如何在where子句中包含部分匹配。

我最初的尝试是这样的:

SELECT sampleID, registrationNo, product
FROM Samples
WHERE registrationNo IN ('%23232%', '%45678%', %98764%');

3 个答案:

答案 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%';