各位大佬,下午好!
今天遇见一个关于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语句把这个问题给解决了...
各位大佬有什么办法可以解决吗?
急....拜托看到的大佬,指教指教..
你这个字段内容是一整行吗?
11,12,13,10 可以做个变换
每个字段前后增加一个逗号:,11,12,13,10,
然后匹配 ,10,这个字符串就可以了
select * from merchant where contract(',',ownedCoupon,',') like '%,10,%'
确实,是的,字段里面存的是一个数组,varchar类型的,当时每个数组前面都有一个 , 逗号,但是我觉得不好看,用代码在存进去的时候去掉了,没考虑到去匹配 ,10, 感谢指点!
% :表示任意0个或多个字符。可匹配任意类型和长度的字符
所以你只需要把数字10后的‘%’删除就OK啦!
好的好的,我试试