解决mysql查询,in条件参数为带逗号的字符串,查询结果错误

解决mysql查询,in条件参数为带逗号的字符串,查询结果错误,第1张

如有以下sql:

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

1.in 后面是记录集,如:

select  *  from  table  where   uname  in(select  uname  from  user)

2.in 后面是字符串,如:

select  *  from  table  where   uname  in('aaa',bbb','ccc','ddd','eee',ffff'')

注意:这里一定要将字符串用单引号'' 标注起来;

3.in 后面是数组,用如下方法,请参考:

//$pieces是含数据的数组

for($i=0$i<count($pieces)$i++){

$uname=$uname."'".$pieces[$i]."',"

}

$the_uname ="uname in(".$uname."'')"

select  *  from  table  where    ".$the_uname." 

备注:这种方法的原理其实很简单,二就是把数组编程上面“第2种情况”的形式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6144935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存