sqlite的bind限制:in(?)

来源:互联网 发布:淘宝开店保证金交不了 编辑:程序博客网 时间:2024/04/30 08:55

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五次值(第二种太麻烦了, 不推荐,这里仅是作测试).

0 0