[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就用*方法,同樣的效果。)
請教一個關于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的相關問題
拜托,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了。
ASP SQL IN 數組中文查詢,如何修改SQL語句
正如一樓所說,in后邊是結果集不是字符串!所以這使用in的方式不正式!
但是結果集也可以自己直接寫出來的,如果在下而后語句是正確的:
select * from table where id in (1,10,20);
而這里恰是ASP組合字符串,只要我們組成這種形式就可以了!
dim a
a ="中A24307,中AE5526,中AL3242"
a = replace(a,",","','") '將每個,用','替換
a= "'"&a&"'" '兩邊再加上',這樣組成了'cc','cc','cc'的形式
sql="SELECT * FROM minxi WHERE CPH in ("&a&")"
set rs=*object("*set")
* sql,conn,3,1
不過給個建議是這些處理不如直接放在一個存儲過程中!
一不小心,里邊多一個'時就會出錯的!
SQL語句可以聲明使用數組么
SQL語句可以聲明使用數組,使用方法為:
1、我們先定義一個數組,數組內容是一些數字,可以對應為數據表里的id列。
2、使用implode方法將數組轉換為字符串,這是php里的語法,其他語言使用對應的方法。
3、然后我們拼接sql查詢語句里,將轉換后的字符串拼接到in語句后就行了。
4、不直接用代碼去執行數據庫了,先使用dump語句把sql輸出來。
5、運行頁面,可以看到最終的sql語句是如下圖這樣的。
6、然后我們可以將sql語句在數據庫客戶端工具里執行一下。
7、執行后,就可以看到查詢到數組對應id的數據了。
SQL語句中 in和exist區別
in 和 exists也是很好區別的.
in 是一個集合運算符.
a in {a,c,d,s,d。.}
這個運算中,前面是一個元素,后面是一個集合,集合中的元素類型是和前面的元素一樣的.
而exists是一個存在判斷,如果后面的查詢中有結果,則exists為真,否則為假.
in 運算用在語句中,它后面帶的select 一定是選一個字段,而不是select *.
比如說你要判斷某班是否存在一個名為"小明"的學生,你可以用in 運算:
"小明" in (select sname from student)
這樣(select sname from student) 返回的是一個全班姓名的集合,in用于判斷"小明"是否為此集合中的一個數據;
同時,你也可以用exists語句:
exists (select * from student where sname="小明")