查询中的连接变量 - SQL Server 2008

时间:2013-04-18 18:00:19

标签: sql-server concatenation

我的问题很基本。

我正在创建一个存储过程并拥有以下变量:

@ConcatenarClausulaWhere

在执行过程期间,在WHERE之后插入此变量中的几个条件:

SELECT ID
FROM TABLE1
WHERE indStatus = 'True'
AND (Description LIKE '%' + @ STRING + '%')

我的目的是做一些事情:

SELECT ID
FROM TABLE1 The
WHERE indStatus = 'True'
AND (Description LIKE '%' + @ STRING + '%') + @ ConcatenarClausulaWhere

但是,这是不可能的。为什么呢?

我正在使用SQL Server 2008

1 个答案:

答案 0 :(得分:3)

您需要动态SQL将WHERE子句附加到查询中。 SELECT语句不仅仅是一个字符串。你还需要在这里非常警惕SQL注入。您如何验证用户输入此where子句参数的内容?

DECLARE @sql NVARCHAR(MAX) = N'SELECT ID FROM dbo.TABLE1 
  WHERE indStatus = ''True'' AND (Description LIKE @String)'
  + @ConcatenarClausulaWhere;

EXEC sp_executesql @sql, N'@String NVARCHAR(MAX)', N'%' + @STRING + '%';