表字段类型字符串可以包含逗号分隔的int值,例如“ 1,6,2,13”或“ 3,9,2”或“ 1,3”

如何选择所有包含例如“ 3”没有得到“ 13”?

在这种情况下,select * from table where field like '%3%'将不起作用。
like '%,3,%

目前,我正在尝试所有组合:'3,%','%,3','%,3,%',但是我想知道是否有更简单的方法。

最佳答案

LIKE不能用于精确搜索,最好使用REGEX进行精确搜索

SELECT * FROM table WHERE
    field  REGEXP '[[<:]]3[[:>]]'


或者您也可以使用FIND_IN_SET()功能

SELECT * FROM tblname WHERE
    FIND_IN_SET('3', field ) > 0


注意:如果标签不是对称逗号分隔的,FIND_IN_SET()函数将无法正常工作,如果标签之间有空格,则会产生问题

关于mysql - 如何检查字段是否在mysql中包含特定值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28314969/

10-16 13:36