如何在sql server 2008中一次检查更多列值?

时间:2012-03-28 11:32:42

标签: sql-server-2008

我的桌子:

id address tag
1  test   class1
2  test1  class2
3  test3  class3

在UI中,我将所有标签名称显示为复选框。 当用户选择一个或多个标签名称时,需要获取所需的地址值。如何获得? 如果用户在UI中选择class1,class2则需要获得test,test1作为结果。 请告诉我如何在sqlserver 2008中编写查询。

编辑代码:

taglist = "class1,class2";
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
                SqlCommand cmd = new SqlCommand("usp_GetTags", con);
                cmd.Parameters.Add("@Tags", SqlDbType.VarChar).Value = taglist;

                con.Open();

                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);

虽然传递上面的参数没有得到任何结果。如果我传递单个taglist = class1获得results.but taglist =“class1,class2”没有得到任何结果。请告诉我如何从UI传递多个参数。

1 个答案:

答案 0 :(得分:1)

您可以使用IN关键字在sql server中编写查询。

Select address from mytable where tag IN ('class1','class2')

编辑:

将带有值的参数添加到存储过程中,如下所示。以下代码是用C#.net

编写的
            comand.Parameters.AddWithValue("@Parameter1", "class1");
            comand.Parameters.AddWithValue("@Parameter2", "class2");

编辑2: 将所有值放在单个字符串中非常简单,因此您的查询也适合。在您的存储过程中编写查询,如

            Select address from mytable where tag IN (@SingleParameter)

并在您的编码部分写下如下

            string SingleParameter = "";
            SingleParameter = "class1,class2,class3";
            comand.Parameters.AddWithValue("@SingleParameter",SingleParameter);

编辑3: 最后,我找到了解决问题的方法。编写存储过程如下

ALTER PROCEDURE dbo.TestSP
    /*
    (
    @parameter1 int = 5,
    @parameter2 datatype OUTPUT
    )
    */
    @SingleParameter varchar(30)
AS
    /* SET NOCOUNT ON */
    declare @tags varchar(500)
    set @tags = @SingleParameter
    create table #t (tag varchar(10))
    set @tags = 'insert #t select ' + replace(@tags, ',', ' union select ')
    exec(@tags)
      Select address from sample1 where (tag in (select tag from #t))
    drop table #t
    RETURN

并发送参数SingleParameter如下

            string SingleParameter = "";
            SingleParameter = "'class1','class2','class3'";
            comand.Parameters.AddWithValue("@SingleParameter",SingleParameter);
相关问题