sqlite的bind限制:in(?)

本文讨论了SQLite在处理包含多个绑定参数的SQL查询时的问题,特别是使用in()和in(:ids)语句时的查询行为。通过实例展示了如何正确地处理多个绑定参数以避免查询结果为空的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqlite可以对sql中的?,?NNN,:AAA等字符串进行替换操作,其中NNN为整数,AAA为字母组合.但这里有一个限制:

当sql为select * from im_sysgrp_mstr where im_sysgrp_id in (?);bind的数据为"1,2,3,4,5"字符串时,在进行bind之后,查询没有结果.但如果只bind一个数字,如1,则查询返回一个结果.所以in(?),in(:ids)等当bind多个值时,查询空结果.可以理解为sqlite在bind时把1,2,3,4,5当成了一个整体,然后在进行in_sysgrp_id比较时,是比较id值是否等于"1,2,3,4,5".

此时,要把sql改为:select * from im_sysgrp_mstr where im_sysgrp_id in (1,2,3,4,5),或者select * from im_sysgrp_mstr where im_sysgrp_id=? or im_sysgrp_id=? orm_sysgrp_id=? or m_sysgrp_id=? or m_sysgrp_id=?;然后分别bind五次值(第二种太麻烦了, 不推荐,这里仅是作测试).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值