如何将此信息传递给SQL Server 2008?

时间:2010-03-01 12:06:56

标签: sql-server sql-server-2008

请访问http://www.stumbleupon.com/

它问你感兴趣的是什么。

我的网站上会有类似的东西,除了我需要有4个不相同的块。当用户未在部分中选择任何内容时,表示他/她已选择所有部分。其中1个块将有大约10个选项,而其他3个块将有2-3个选项。

如何将用户选择的内容传递给SQL Server 2008?请注意我将有4组多个参数,这4组基本上是4行不同的列,所有列都包含整数id。当且仅当每个部分传递一个参数时,我会做类似

的事情

从表中选择*,其中column1 = @ param1,column2 = @ param2,等等。

但事实并非如此,因为用户可以为@ param1传递多个值,依此类推。

我可以完成这项工作,但我想知道最有效的方法。

如果我的帖子不清楚,请告诉我。

编辑: 基本上,如果我在数据库中存储文章,我在行中有4列,每个整数。我想基于这4列查询这些文章,但问题是传递这些列的多个值而不是每列一个值。

3 个答案:

答案 0 :(得分:1)

如果您的客户端语言支持它,您应该查看表值参数:

http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters

如果你不能使用它们,请查看TSQL中的数组和列表中的一个:

http://www.sommarskog.se/arrays-in-sql.html

这是TSQL中非常全面的动态搜索条件列表:

http://www.sommarskog.se/dyn-search.html

这也可能有所帮助:

Sane/fast method to pass variable parameter lists to SqlServer2008 stored procedure

答案 1 :(得分:0)

尝试将所有参数值转储到XML中,然后将其传递给SQL Server,然后在查询中解析它。

答案 2 :(得分:0)

在这种情况下,这样的查询不会起作用吗?

SELECT * 
FROM   TABLE 
WHERE  COLUMN1 IN ( @param11, @param12, @param13 ) 
       AND COLUMN2 IN ( @param21, @param22, @param23 )  

等等。