MySQL如何用LIKE匹配单个数字2,排除含24的记录
解决LIKE筛选独立数字2时排除24的问题
现有test表的Number字段数据如下:
Number 1, 2 1, 24
需求:筛选出仅包含独立数字2的记录(即1, 2),排除包含24的记录,但原语句 SELECT * FROM test WHERE number LIKE '%2%' 会同时选中两条记录,可通过以下方式调整:
方案1:基于LIKE的精确匹配(通用SQL写法)
由于字段值是逗号加空格分隔的数值,我们需要确保2是一个独立的分隔项,覆盖三种场景:
- 2位于字段开头(如
2, 3) - 2位于字段中间(如
1, 2, 3) - 2位于字段结尾(如
1, 2)
对应的SQL语句:
SELECT * FROM test WHERE number LIKE '2,%' OR number LIKE '%, 2,%' OR number LIKE '%, 2';
这种写法通过匹配2前后的分隔符(逗号+空格或字符串首尾),避免将24中的2误判为目标值。
方案2:使用正则表达式(数据库支持时更简洁)
如果你的数据库支持正则表达式(如MySQL的REGEXP、PostgreSQL的~、SQL Server的REGEXP_LIKE),可以用更简洁的规则匹配独立的2:
MySQL示例:
SELECT * FROM test WHERE number REGEXP '(^|, )2(, |$)';
PostgreSQL示例:
SELECT * FROM test WHERE number ~ '(^|, )2(, |$)';
正则表达式解释:
(^|, ):匹配字符串开头,或逗号加空格的分隔符2:精确匹配目标数字(, |$):匹配逗号加空格的分隔符,或字符串结尾
这样就能精准定位作为独立项的2,排除包含2的其他数值(如24)。
内容的提问来源于stack exchange,提问作者TENZENROTH
相关产品推荐
相关产品推荐

