首页 新闻 会员 周边

关于MySql的一个小疑问

0
悬赏园豆:20 [已解决问题] 解决于 2021-12-07 09:19

各位大佬,下午好!
今天遇见一个关于MySql的业务场景需求如下:
表为:merchant
字段为:ownedCoupon(varchar)
数据内容为:,
10,11,12,13
11,12,13,10
11,12,10,13
11,12,13,100
我想通过SQL语句找出表数据内有10存在的数据进行输出
于是我想到了模糊查询:
SELECT * FROM merchant WHERE ownedCoupon LIKE '%10%';
但是这样会把100的也给打印出来。。。
代码上可以解决这个问题但是用.join()但是我想试试能不能用sql语句把这个问题给解决了...
各位大佬有什么办法可以解决吗?
急....拜托看到的大佬,指教指教..

右先生_QQ的主页 右先生_QQ | 初学一级 | 园豆:6
提问于:2021-12-06 14:39
< >
分享
最佳答案
0

你这个字段内容是一整行吗?
11,12,13,10 可以做个变换
每个字段前后增加一个逗号:,11,12,13,10,
然后匹配 ,10,这个字符串就可以了
select * from merchant where contract(',',ownedCoupon,',') like '%,10,%'

收获园豆:20
茂茂 | 老鸟四级 |园豆:2892 | 2021-12-06 17:02

确实,是的,字段里面存的是一个数组,varchar类型的,当时每个数组前面都有一个 , 逗号,但是我觉得不好看,用代码在存进去的时候去掉了,没考虑到去匹配 ,10, 感谢指点!

右先生_QQ | 园豆:6 (初学一级) | 2021-12-07 09:18
其他回答(1)
0

% :表示任意0个或多个字符。可匹配任意类型和长度的字符
所以你只需要把数字10后的‘%’删除就OK啦!

Open_xing | 园豆:202 (菜鸟二级) | 2021-12-06 15:52

好的好的,我试试

支持(0) 反对(0) 右先生_QQ | 园豆:6 (初学一级) | 2021-12-07 09:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册