我的mysql / php表中有一个字符串表。
id | str
3 | 2,4,5,6
4 | 7,8,9,14
5 | 3,1,16
如果我使用 LIKE 关键字进行搜索,例如“1”,则结果低于其错误
id | str
4 | 7,8,9,14
5 | 3,1,16
但预期的结果是
id | str
5 | 3,1,16
因为“1”只在上面一行,但遗憾的是不知道,
帮我解决这个问题,
Nithish。
答案 0 :(得分:4)
您正在寻找的是FIND_IN_SET功能
select find_in_set('1', '3,2,1'); => 3
select find_in_set('1', '3,2,14'); => 0
更好的是,考虑normalizing您的数据库
答案 1 :(得分:1)
使用REGEXP代替LIKE http://dev.mysql.com/doc/refman/5.1/en/regexp.html
str REGEXP'1 [,$]'
答案 2 :(得分:1)
你应该使用REGEXP而不是LIKE
select * from mytable WHERE str REGEXP'(^ |,)1(,| $)'
^代表“字符串的开头”,$代表“字符串的结尾”
有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/regexp.html