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

王朝知道·作者佚名  2009-09-01
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

我想问一下,假如我现在有一个数组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方法,同样的效果。)

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航