我有名字表:SQL查詢 - C#
ID Name
1 Ken
2 John
3 Tom
...
我有以下的C#代碼變量: var names
; //這是一些名稱,如「肯,湯姆」的列表
我需要一個查詢通過名稱表並獲取所有名稱不在名稱變量。
所以在上面的情況下,如果我運行查詢結果應該是約翰。
我不知道如何在這個問題中編寫查詢,我通過名稱迭代並反覆運行查詢,我認爲這是非常糟糕的方式來做到這一點。有人可以建議什麼是最有效的方法來做到這一點?
我有名字表:SQL查詢 - C#
ID Name
1 Ken
2 John
3 Tom
...
我有以下的C#代碼變量: var names
; //這是一些名稱,如「肯,湯姆」的列表
我需要一個查詢通過名稱表並獲取所有名稱不在名稱變量。
所以在上面的情況下,如果我運行查詢結果應該是約翰。
我不知道如何在這個問題中編寫查詢,我通過名稱迭代並反覆運行查詢,我認爲這是非常糟糕的方式來做到這一點。有人可以建議什麼是最有效的方法來做到這一點?
如果您需要做的是在T-SQL,你可以這樣做:
SELECT *
FROM table
WHERE Name NOT IN (<<comma separated list of values here>>)
,可能是行內或在存儲過程中完成的。
如果你可以使用實體框架(你表明.NET 4.0,所以你應該可以),那麼你可以使用類似這樣的回答了一句:
嘗試使用table-valued parameter送數據。在這一點上,你可以正常比較。
如果表格如您所示的那樣簡單,那麼我無法想象它有超過幾千條記錄。既然如此,表掃描應該是一個可接受的解決方案。
select Name
from tbl
where ', ' + @names + ', ' not like '%, ' + name + ', %';
參數化@names變量。
你看過SQL中的「IN」語句嗎?這看起來像是你最好的選擇,但是要做到應有的注意,並確保你正在驗證names變量中沒有包含任何可用於SQL注入的內容。 (一個簡單的測試方法是包含名字「O'Reilley」)。更多信息:http://msdn.microsoft.com/en-us/library/ms177682.aspx和https://www.owasp.org/index.php/SQL_Injection – David
您是否使用Lync?發佈您的代碼。 – SergeyS
@DavidStratton - 我如何在這裏使用「in」?選擇* from名稱<>「Ken」 – NoviceMe