請教一個關于SQL語句中in的相關問題
拜托,int [] cID 這個變量時。net程序里面的數組, sql=“”語句則是要放到sql2005這個dbms里面執行,他們兩個是不同的系統怎么能直接寫在sql里面??如果你要那樣實現,應該先把cID這樣的數組值先insert到一個臨時表里面,然后在sql里面這樣寫
where id in (select cID from 臨時表),
如果cID里面值不多,可以用拼字符串來實現,就是你說的那個意思,只是拼字符串的方法不對,應該是
for (i=0 ,i++ ,i{sql_str1 = convertostring(cID[i]) +','+sql_str1} ;
sql="******* where id in (" + sql_str1 +")";
最后輸出sql檢查下,如果沒問題就ok了
SQL 怎樣變量實現 條件 IN
您好:
SQL Server里的IN 語句,是在一個集合中進行查詢。
這個集合的來源可以通過SELECT語句來實現
也可以通過EXECUTE和sp_executesql執行一個拼接的動態語句來實現。
如
exec('select @count=count(empid) from '+@tableName+' where proid='+@proid+' and id<'+@id+' and state!=4')
或
set @sql=N'select @count=count(empid) from '+@tableName
exec sp_executesql @sql,N'@count int output ',@count output
select @count
[SQL語句]關于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就用*方法,同樣的效果。)