[SQL语句]关于IN的一个问题
我想问一下,假如我现在有一个数组Ary()={1,45,375,48,98,46}
我现在想把这个数组中的每一个值做为语句
SELECT * FROM TABLE WHERE AA IN ()后边IN 的参数,该如何实现?
是不是直接写数组名就可以了呢?(如果是,怎么个写法?)
如果不是又该如何实现?
希望能写个正确、完整且能直接使用的语句
麻烦了,感激不尽!
参考答案:直接写数组名当然不行,你那个数组明显是程序中定义的,不能在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方法,同样的效果。)