MySQL在列表中的部分匹配,如(';%sdfdsf%';,';%sdfhjsdfh%';)

MySQL在列表中的部分匹配,如(';%sdfdsf%';,';%sdfhjsdfh%';),mysql,Mysql,使用MYSQL,当我有一个要搜索的值列表时,如何在where子句中包含部分匹配 我最初的尝试是这样的: SELECT sampleID, registrationNo, product FROM Samples WHERE registrationNo IN ('%23232%', '%45678%', %98764%'); SELECT sampleID, registrationNo, product FROM Samples WHERE registrationNo LIKE '%23

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

我最初的尝试是这样的:

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

你不能在一句话里把所有的事情都做完。你必须像这样把它拆开:

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

中的
是简单相等性测试的快捷方式。它不是类似于
匹配的快捷方式

这两者在功能上完全相同:

foo IN ('a', 'b', 'c')
(foo = 'a') OR (foo = 'b') OR (foo = 'c')
用你的威尔卡,它是

(foo = '%bar%') OR (foo = '%baz%') etc...
如果要使用
LIKE
类型匹配,则必须自己写出每个
LIKE
操作。

如果只有数字(或简单字符串),则可以使用REGEXP:

SELECT sampleID, registrationNo, product
FROM Samples
WHERE registrationNo REGEXP '23232|45678|98764';