动态SQL中的伪列错误无效

时间:2013-11-07 13:57:57

标签: sql sql-server tsql sql-server-2012

我试图在SQL Server 2012上搜索以下查询但是当我使用@Val2时出现错误:

  

Msg 126,Level 15,State 1,Line 1
  伪列无效" $ E500385"。

如果我使用@Val1,它就能完美运作

有什么想法吗?

DECLARE @Val1 NVARCHAR(30) = '09064881'  
DECLARE @Val2 NVARCHAR(30) = '$E500385.MS3'  
DECLARE @SQL  NVARCHAR(1000)

SET @SQL = 'SELECT * FROM <table> WHERE [F1] = '+@Val2 
EXEC(@SQL)

SET @SQL= 'SELECT * FROM <table>  WHERE [F2] = '+@Val1  
EXEC(@SQL)

1 个答案:

答案 0 :(得分:2)

如果变量包含文本

,则需要在变量周围加上引号
SET @SQL= 'SELECT * FROM your_table WHERE [F1]='''+@Val2 + ''''