MySQL在列表中的部分匹配,如(';%sdfdsf%';,';%sdfhjsdfh%';)
使用MYSQL,当我有一个要搜索的值列表时,如何在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
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';