Sql server 在查询中连接变量-SQL Server 2008

Sql server 在查询中连接变量-SQL Server 2008,sql-server,concatenation,Sql Server,Concatenation,我的问题很基本 我正在创建一个存储过程,并将其设置为以下变量: @ConcatenarClausulaWhere 在过程执行期间,将多个条件串联在此变量中,以在其中插入: SELECT ID FROM TABLE1 WHERE indStatus = 'True' AND (Description LIKE '%' + @ STRING + '%') 我的意图是这样做: SELECT ID FROM TABLE1 The WHERE indStatus = 'True' AND (Descr

我的问题很基本

我正在创建一个存储过程,并将其设置为以下变量:

@ConcatenarClausulaWhere
在过程执行期间,将多个条件串联在此变量中,以在其中插入:

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

您需要动态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 + '%';

您需要动态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 + '%';