Sql server 2008 使用varchar值中的IN语句进行选择
可能的重复项:Sql server 2008 使用varchar值中的IN语句进行选择,sql-server-2008,select,performance,Sql Server 2008,Select,Performance,可能的重复项: 我有一个存储过程,它必须使用过滤系统选择值。 想象一张桌子 ColA | ColB | ColC | 'A' 12 1 'B' 13 2 'C' 14 3 我需要为存储过程提供一个ColC值列表,用于那些需要这些值的对象,例如(1,3) 会给我A和C 我知道可以在声明中这样做: Select * from Table where ColC in (1,3) 但如何让这一点充满活力?解决方案是在Varchar变量中构造sql命令,
我有一个存储过程,它必须使用过滤系统选择值。 想象一张桌子
ColA | ColB | ColC |
'A' 12 1
'B' 13 2
'C' 14 3
我需要为存储过程提供一个ColC值列表,用于那些需要这些值的对象,例如(1,3)
会给我A和C
我知道可以在声明中这样做:
Select *
from Table
where ColC in (1,3)
但如何让这一点充满活力?解决方案是在Varchar变量中构造sql命令,如
SET @MyList ='(1,3)'
SET @SQL = '
Select *
from Table
where ColC in ' + @MyList
And then execute @SQL
但这是最好的方式吗?这样做动态命令不是太重吗
感谢您的建议。关于如何进行查询,有很多不同的选项,但是,通常的做法是像您所展示的那样构建查询,因此我认为这是最好的解决方案
编辑:仍然显示将生成查询作为第一种方法。您使用的是哪个版本的SQL Server?如果没有额外的验证(ID列表),我不会信任此用户输入。SQL Server 2008抱歉,我编辑了标记添加:请看一看这个(臭名昭著的)问题:该链接已过时。而通常的弦乐演奏并不是最好的方式。谢谢,但是,它仍然适用。如果你不这么认为,让我们看看你提出了一个更有效的方法。我添加的链接匹配你的新链接。这是参考源。我已经投票关闭,因为这感谢很多坏的显示名称,方法2你的链接真的帮了我。。