T1.limit_user 为account表中查询出来的值
‘9,8,4’
查询sql正确查询结果应为:
不可推荐 ,推销客户,推销客户
实际结果为:
不可推荐
原因:
在mysql中in里面如果是字符串的话,会自动转化成int类型的,内部使用了如下方法: CAST('4,3' AS INT)
导致’4,3‘ 变成了4,所以上述查询sql结果只有第一个。
解决方案
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')
正确的sql
SELECT left(name,CHARINDEX(',',NAME)-1)FROM 表
逗号前就是逗号左边了、left函数
取指定字段某位置左边的字符串、
CHARINDEX(',',NAME)-1指定某字段中逗号开始的位置,-1是去除‘,’本身的位置
MYSQL
select substring_index(name,',',1)
from 表
截取字段值里第一个逗号左边的全部字符串
第一部分:FIND_IN_SET()函数用法,
查询用逗号分隔的字段,
表A中 go_value字段的值是以逗号分割,
查询 go_value字段中含有3的行:
select * from A where find_in_set('3', go_value)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)