添加参数SQL IN

问题描述:

我只是说如果我有这样的SQL;添加参数SQL IN

SELECT B.HESAP_NO 
FROM S_TEKLIF B 
WHERE B.HESAP NO = 234 

我可以添加一些参数这个SQL programaticly这样C#代码;

 if (txtBoxText1 != "") 
     { 
      strQuery = strQuery + " AND A.ISL_TAR >= @S_TARIH_B"; 

      dt_stb = DateTime.Parse(txtBoxText1); 
      myCommand.Parameters.AddWithValue("@S_TARIH_B", dt_stb); 
     } 

有了这个代码,我可以添加和"A.ISL_TAR >= @S_TARIH_B"到我我SQL

但是,在SQL IN运营商我不知道如何添加一些参数。

例如;

SELECT A.HESAP_NO 
FROM S_TEKLIF A 
WHERE A.HESAP_NO IN (SELECT A.HESAP FROM S_TEKLIF WHERE A.MUS_K_ISIM = 
for (int counter = 0; counter < list.Items.Count; counter++) 
    { 
if (list.Items[counter].Selected) 
{ 
values.Add(list.Items[counter].Value); 
} 

    }) 

如何添加参数到SQL IN

有很多方法可以实现这一点,所有这些方法都在Arrays and Lists in SQL Server文章中描述。对于任何SQL开发人员来说,这是一个读取的读取。

+0

也许我应该试试这种方式。 Firstle我将所有A.MUS_K_ISIM分配给“List”,然后将“cmd.CommandText =”选择ProductID,ProductName FROM Northwind..Products“&_ ”Where ProductID IN(“&List&”)“ ”Right? – 2011-03-22 13:14:43

+0

我仍然更喜欢使用用户函数是SQL Server,而不是在代码中构建查询,但是,如果List事件是实际的逗号分隔字符串,则可以工作。 – SWeko 2011-03-22 13:36:41

我不知道有任何方式将一个列表/数组作为单个参数传递以用作IN子句的一部分。你最好的选择可能是把你自己的IN子句作为一个字符串来构建。

或者,您可以分步执行此操作。
1.只是一个ID字段创建一个临时表
2.创建一个参数化查询,插入一个值到该临时表
3.遍历你的价值观,调用SQL将值插入临时表
4. exexute你的主要SQL查询,加入临时表,而不是使用IN

你只需要确保你不会关闭并重新打开你的会议,每次,从而确保你的临时表是坚持和保留你已经插入的值。