sql - 动态 SQL 中无效的伪列错误

标签 sql sql-server t-sql sql-server-2012

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

Msg 126, Level 15, State 1, Line 1
Invalid pseudocolumn "$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)

最佳答案

如果变量包含文本,则需要在变量两边加上引号

SET @SQL= 'SELECT * FROM your_table WHERE [F1]='''+@Val2 + ''''

关于sql - 动态 SQL 中无效的伪列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837815/

相关文章:

mysql - 无法在 MySql 中将 varchar 转换为 datetime

javascript - Laravel 依赖选择

更新时的 SQL Server 移动到单独的列

sql-server - 使用 STUFF 或 CONCAT 命令组合 T-SQL 中的行

azure - Azure Synapse 中的 Openrowset 语法问题

mysql - 使用时间格式选择 +- 2 分钟()

mysql - 将历史数据附加到非历史表

mysql - SQL 查询未给出所需结果

sql - 查找丢失的记录并返回相邻的记录 SQL

t-sql - 删除表中 N 个最旧的条目