如何检查字段是否包含mysql中的特定值?

时间:2015-02-04 06:37:10

标签: mysql select

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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()函数将无法正常工作,如果标签之间有空格,则会产生问题

答案 1 :(得分:0)

尝试使用正则表达式:

SELECT * 
FROM table 
WHERE field REGEXP '^3,|,3,|,3$';