表字段类型字符串可以包含逗号分隔的int值,例如“1,6,2,13”或“3,9,2”或“1,3”
如何选择包含例如条目的所有条目“3”没有得到“13”?
select * from table where field like '%3%'
在这种情况下不起作用。
也不是like '%,3,%
目前我正在尝试所有组合:'3,%','%,3','%,3,%',但我想知道是否有更简单的方法。
答案 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$';