我正在研究Sql server,并尝试做不同的例子。你能建议我在这种情况下使用什么吗?下面是我的检查列表(不是复选框,以列表的形式在不同窗口中打开):
Colors
Red
Blue
White
Black
Green来自表item.colors
希望根据选择的记录提供搜索。例如,假设选择了'Red‘和'Blue’作为输出,希望从表中获取相关记录。
Colors
Red v
Blue v
White
Black
Green所以输出:
id Name Colors
1 T-shirt Red
2 Boots Blue 有什么建议要怎么做吗?即使使用参数,那么在有数百条记录的情况下怎么办?我们不能有100个参数)
发布于 2013-03-28 16:42:59
您可以使用两个选项(可能更多):
A.使用String参数
首先,在应用程序中将值连接到单个字符串中,并将其作为一个varhcar参数发送。它可能看起来像这样:'Red;Blue‘(或者可能是一些ID)。之后,SQL过程应该将字符串拆分为值列表,并将其放在#temp表中。在web上有很多字符串拆分功能。你可以很容易地在谷歌上搜索它,或者查看这个链接以获得一些想法:How do I split a string so I can access item x?最终只需将#temp表中的值与您的表连接起来,即可获得所需的数据。
B. XML
这是一个更“花哨”的选项。将app中的值放入XML中,并将其作为XML参数传递给存储过程。我不知道您使用的是什么编程语言,但应该有一个提供的方法来做到这一点。然后,在您的过程中-如果您知道如何使用-您可以直接将XML参数与表连接以过滤数据,或者,您也可以先将它们溢出到#temp表。再说一次,这里有大量关于如何使用XML的信息。一些例子:Select values from XML field in SQL Server 2008 http://blog.sqlauthority.com/2010/06/23/sqlauthority-news-guest-post-select-from-xml-jacob-sebastian/
编辑:(第三个选项,最简单,但我不推荐它)
C.动态SQL
创建连接字符串,就像在选项A中一样,但在过程中-不要将其拆分为值,而只是使用SELECT语句将其粘合到字符串中,并使用sp_executesql或EXEC。
SET @sql = 'SELECT * FROM YourTable WHERE Color IN (' + @parameter + ')'
EXEC(@sql)https://stackoverflow.com/questions/15677077
复制相似问题