如果您希望确保只查询到 某字段中包含单独某比如2的记录,并且不希望查询到像 '222' 这样的数字,您需要使用正则表达式来排除那些数字 '2' 被其他数字包围的情况。
您可以使用以下正则表达式来匹配只包含单独的 '2' 或者以 '2' 开头或结尾的字符串:
SELECT *
FROM `表`
WHERE (nature_ids REGEXP '^2$|^2,|,2$|,2,|2,$' OR nature_ids NOT REGEXP '[^,]*2[^,]*')
这里的正则表达式解释如下:
^2$
匹配只包含 '2' 的字符串。^2,
匹配以 '2' 开头的字符串。,2$
匹配以 '2' 结尾的字符串。,2,
匹配 '2' 被其他数字或逗号包围的字符串。2,$
匹配以 '2' 结尾且 '2' 前面有逗号的字符串。