好吧,不知道爲什麼一家價值數十億美元的公司爲其旗艦SQL服務器的數組函數掠過這就是人們使用MySQL服務器的原因。好的,足夠的咆哮。使用SQL 2005使用SQL 2005進行數組比較。錯誤轉換
比方說,我使用的查詢字符串方法通過複選框收到陣列從另一頁:
intTask = request.querystring("task")
在這個例子中,intTask =「1,3,5」
然後我使用的查詢
SELECT user.Task FROM user WHERE (user.Task in (" & intTask & "))
這給出了一個錯誤:
Conversion failed when converting the nvarchar value '1, 2' to data type int
User.task列中的數組在這裏= 1,2。 NVARCHAR是數據類型。 intTask是一個字符串。不知道SQL爲什麼試圖將列轉換爲整數,當它假設是一個字符串比較。我已經知道了SQL注入漏洞,該漏洞由頁面的另一個腳本處理。
好的。那麼如何比較使用SQl Server 2005的數組呢?我似乎無法找到任何SQL函數將遍歷2個字符串並比較所有匹配的值。
例如
intTask = 1,2
user.task = 3,5,7,2,9
因爲2的,我應該得到一個記錄,因爲2的兩個陣列中存在
UPDATE
是否有一個SQL函數將處理兩個數組和遍歷數組以查找匹配項。類似:
intTask = 「1,3,5」
用戶( 「任務」)= 「3,5,2」
ARR1 =分裂(intTask, 「」)
ARR2 =分裂(用戶( 「任務」), 「」)
對於i = 0至UBound函數(ARR1)
for j=0 to UBound(arr2)
if(arr1(i) = arr2(j)) then
common_found = true
end if
Next
下一頁
預先感謝
+1 - 我有那篇文章之前收藏並丟失了,這是一篇很棒的文章。 – LittleBobbyTables 2010-08-26 16:08:44
請在代碼中提供使用「prefix win N」的例子。最好是一個完整的SQL查詢語句。謝謝。 – Patriotec 2010-08-26 16:56:46
看我已添加的代碼 – SQLMenace 2010-08-26 17:13:01