mysql 如何查询指定的多个以逗号分割值是否在以逗号分隔的数据中
比如有个table1的表,里面有一栏叫 tag ,tag中的数据为
tag
——
34,2
10
10,34
10,2
10,34,2
查询条件 tag 为34,10的时候 只要求查询出 第二条(10)和第三条(10,34)的记录,
tag为为10,2的时候 只要求查询出 第二条(10)和第四条(10,2)的记录,
多谢~~~~
mysql 如何查询指定的多个以逗号分割值是否在以逗号分隔的数据中
比如有个table1的表,里面有一栏叫 tag ,tag中的数据为
tag
——
34,2
10
10,34
10,2
10,34,2
查询条件 tag 为34,10的时候 只要求查询出 第二条(10)和第三条(10,34)的记录,
tag为为10,2的时候 只要求查询出 第二条(10)和第四条(10,2)的记录,
多谢~~~~
有个很搓的写法,如果每加一个值就往后面加四个or
select * from table1 where tag = '10' or tag like '%,10' or tag like '10,%' or tag like '%,10,%';
select * from table1 where tag REGEXP '^10(,2)?$' or tag REGEXP '^2(,10)?$';
select * from table1 where tag REGEXP '^34(,10)?$' or tag REGEXP '^10(,34)?$';
使用find_in_set, 正是你想要的,
select * from tags where find_in_set(10, tag);
find_in_set 用于查找这种以逗号分隔的字符串, 该函数返回第一个参数在第二个参数中的位置, 从1开始计算。
比如tag值为10,34的时候, find_in_set(10, tag)返回的结果就是1,如果tag值为34,10的时候, 返回的就是2
3 回答3.7k 阅读✓ 已解决
5 回答1.5k 阅读
2 回答2.2k 阅读
3 回答2.1k 阅读
1 回答980 阅读
3 回答504 阅读✓ 已解决
1 回答649 阅读✓ 已解决
由于MySQL没有
split
功能,因此只能自己弄一个。但MySQL函数不能返回结果集,所以没法以
select xxx()
这种方式使用。也许我们可以写一个procedure,我按题主的要求大致实现了一个,或许可以参考一下:
调用起来很方便,只需要: