2017-01-18 3 views
1

Я создаю веб-приложение в C#, и у меня есть несколько идентификаторов.sql where clause with multiple conditions C# web service

Вот как это выглядит:

string id = "17359,17355,17460,16834"; 

это четыре различных идентификаторы я хранятся в моей строке

теперь это мой SqlCommand

sqlcommand cmd=new sqlcommand("select * from trid where [email protected]",con); 
sqlparameter[] param={ 
new sqlparameter("@id",id) 
}; 

то, что я хочу, я не хотите данные с этими идентификаторами 17359,17355,17460,16834

и я хочу посмотреть остальное o f данные

что я должен делать здесь ??

идентификаторы являются динамичными и могут быть меньше или больше в цифрах

+0

Разделите строку и создайте команду оттуда ... – TheLethalCoder

ответ

1

Вы должны создать функцию, которая будет разделить вашу строку и возвращает отдельные значения, которые можно использовать в операторе отбора, как [выбрать * из SELECT * FROM Трид WHERE ID NOT IN (выберите идентификатор из dbo.splitcommaSep (@IDs))]

Любезно обзор следующей ссылке для функции

http://www.aspsnippets.com/Articles/Split-and-convert-Comma-Separated-Delimited-String-to-Table-in-SQL-Server.aspx

0

Вероятно, динамичный способ сделать это, но это будет работать, если идентификаторы вы не хотите видеть, являются статическими.

string id1 = "17359"; 
string id2 = "17355"; 
string id3 = "17460"; 
string id4 = "16834"; 

sqlcommand cmd=new sqlcommand("SELECT * FROM trid WHERE id NOT IN (@id1, @id2, @id3, @id4)",con); 
sqlparameter[] param={ 
new sqlparameter("@id",id) 
}; 
+0

id являются динамическими и могут быть больше этого –

+0

См. Http://stackoverflow.com/questions/16842263/an-issue-of-sqlcommand-with-parameters -for-in – Matt

+0

Если эта ссылка решает проблему, закройте ее как обман – TheLethalCoder

1

Если ваши идентификаторы разделенных запятыми, вы можете сделать это следующим образом:

SqlCommand cmd = new SqlCommand("select * from trid where id NOT IN (@id)", con); 

Таким образом, вам не нужно разделить ID-строку.