我的表格结构如下:
id category
1 1&2&3
2 18&2&1
3 11
4 1&11
5 3&1
6 1
我的问题:我需要一个sql查询,当用户搜索的类别为1时,会生成如下结果集
id category
1 1&2&3
2 18&2&1
4 1&11
5 3&1
6 1
但我得到的所有结果都不是预期的结果
我尝试过regexp和运营商一样但没有成功。
select * from mytable where category like '%1%'
select * from mytable where category regexp '([.]*)(1)(.*)'
我真的不知道regexp我刚发现它。
所以请帮帮我。
答案 0 :(得分:1)
要匹配由&
分隔的列表项,请使用:
SELECT * FROM mytable WHERE '&'||category||'&' LIKE '%&1&%';
这将匹配整个项目(即仅1
,而不是11
,...),无论是在列表的开头,中间还是结尾。