分享

[SQL语句]关于IN的一个问题

 昵称14432091 2013-10-30

我想问一下,假如我现在有一个数组Ary()={1,45,375,48,98,46}

我现在想把这个数组中的每一个值做为语句
SELECT * FROM TABLE WHERE AA IN ()后边IN 的参数,该如何实现?

是不是直接写数组名就可以了呢?(如果是,怎么个写法?)
如果不是又该如何实现?
希望能写个正确、完整且能直接使用的语句

麻烦了,感激不尽!
transger 谢谢,您写的我看明白了。
但好象是我问的不太清楚,抱歉。
我程序中的数组中的值是通过Split()函数得来的,
具体数组有几个元素值是未知的,是根据用户选择的个数来决定的。
所以,您写的这几个方案暂时未能解决我现在碰到的问题。
若您有好的方法,希望你赐教!麻烦你了。

您误会了,不是元素值是未知的,是元素的个数是未知的。
比如,我用复选按钮,列出20项,
然后
如果用户A,浏览后选择了5项提交,这样,我再用Split()函数生成数组,就有5个元素。
而用户B,浏览后选择了10项提交,这仰,我再用Split()函数,生成的数组就是10个元素了。

所以说数组元素个数不固定!

您对这个有什么好的解决办法么?!
答案:
直接写数组名当然不行,你那个数组明显是程序中定义的,不能在sql中使用。
sql中是不能使用数组的。只有像oracle的pl/sql一类sql扩展程序中能定义数组搜索,但也不是你那种写法。

如果数组是固定值,AA是数字型,这样写就可以了:
SELECT * FROM TABLE WHERE AA IN (1,45,375,48,98,46)
AA是字符型就加单引号
SELECT * FROM TABLE WHERE AA IN ('1','45','375','48','98','46')

如果数组是变量,就只能构造查询字符串:
"SELECT * FROM TABLE WHERE AA IN ("&Ary(0)&","&Ary(1)&","&Ary(2)&","&Ary(3)&","&Ary(4)&","&Ary(5)&")"
同样,AA是字符型就在构造时加单引号
-----------------------------------------------------------
数组元素值是未知的?不太明白你的意思。
如果是未知的就没法查询,必需有确定值才能用sql来查询。
如果是变量,按上面数组变量的方式来写不就行了吗?当然首先要给变量赋值才行。
-----------------------------------------------------------
呵呵,是这样啊,这个也不难啊,用UBound函数取数组最大下标,构造sql查询串时循环最大下标次不就行了么?类似下面这样的写法:
sql = "SELECT * FROM TABLE WHERE AA IN (" '初始化查询字符串
For i = 0 to UBound(Ary) '从0循环到数组最大下标
sql = sql & Ary(i) & "," '将数组中每个值加在查询字符串后面
Next
sql = Left(sql,Len(sql)-1) & ")" '将最后一个逗号换为反括号

(如果用java就用Ary.ubound方法,同样的效果。)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多