尝试传递一组值以使用“IN”进行搜索

时间:2013-04-12 16:24:11

标签: sql vb.net ms-access

我在Access中存储了一个简单的访问查询,但它似乎不起作用。查询就是这个......

SELECT blah FROM table WHERE (((tableID) IN ([@myArrayOfIDs])));

非常简单但当然它不想工作?如果我写IN(16,17,21)然后结果正确返回但是我现在拥有它的方式,什么都没有回来。我错过了什么?

编辑:在将数组传递给Access之前,我使用VB.NET将数组转换为逗号分隔值的字符串。

2 个答案:

答案 0 :(得分:1)

你得到的只是IN(['16,17,21']),它没有测试个别数字。我不记得Access支持多个可变数量的参数。

答案 1 :(得分:1)

Access数据库引擎不接受IN值列表的参数。 IOW,这样的事情永远不会奏效......

tableID IN ([a_parameter_string])

您需要动态创建SQL语句并将逗号分隔值的字符串插入到SQL语句文本中。

或者你可以做这样的事情......

"," & [a_parameter_string] & "," Like "%," & tableID & ",%"

但是那个看起来很难看,并且无法使用索引检索来加速查询。