解决mysql查询,in条件参数为带逗号的字符串,查询结果错误
2017-12-13 15:47
561 查看
如有以下sql:
T1.limit_user 为account表中查询出来的值
‘9,8,4’
查询sql正确查询结果应为:
不可推荐 ,推销客户,推销客户
实际结果为:
不可推荐
原因:
在mysql中in里面如果是字符串的话,会自动转化成int类型的,内部使用了如下方法:
导致’4,3‘ 变成了4,所以上述查询sql结果只有第一个。
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE ur.id IN (T1.limit_user) GROUP BY ur.id ) AS limit_user FROM account T1 WHERE 1 = 1
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 ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE FIND_IN_SET(ur.id, T1.limit_user) > 0 ) AS limit_user, T1.limit_user limit_userid FROM account T1 WHERE 1 = 1
相关文章推荐
- 解决mysql的in条件中参数是带引号的字符串的时候查询失效
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法find_in_set
- 逗号分隔字符串转换为一张表--解决查询in(逗号分隔字符串)出错问题
- oracle查询结果字符串用于查询条件in中,查不到数据
- Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
- Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
- mysql select *... where id in (select 字符串 from ... )查询结果问题?
- 解决Asp.net Web网站发布到服务器上运行时,某界面传参数过多,造成的“此请求的查询字符串的长度超过配置的 maxQueryStringLength 值”错误。
- 测试mysql查询中参数整形和字符串类型错误索引使用情况
- 前台传入多个参数(数组格式),拼接成字符串中间用逗号隔开,传入到sql中用in查询.
- MySQL 中文显示乱码以及中文查询条件返回0条结果的问题解决
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- mysql 查询结果,字符串在.net中变成System.Byte[] 解决方法
- MSSQL和MYSQL中select where in的查询结果按where条件顺序排序的方法
- mybatis 下 mysql in查询按照参数顺序输出结果
- sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件
- MYSQL查询某字段中以逗号分隔的字符串的方法
- MySql使用全记录3 -----以中文作为查询条件时结果为空的原因以及两个MySql小知识点(varchar、单双引号)
- mysql 查询结果 导出 excel格式并解决乱码问题