我正在SQL Server中执行动态Sql片段,其用例如下:
获取一个字母数字格式的歌曲ID(SongId
)(例如:affgb:2c1
)
并从Id。
在正常情况下,它看起来像这样:
SELECT *
FROM SongTable
WHERE SongId = 'affgb:2c1'
由于一些限制,我使用动态SQL将歌曲ID作为名为@songId
的varchar类型参数获取。查询如下:
DECLARE @querySongFromId NVARCHAR(MAX);
SET @querySongFromId = 'SELECT * FROM SongTable WHERE SongId =' + @songId;
EXECUTE sp_executesql @querySongFromId;
上述查询失败,因为我无法在@songId
我尝试通过以下方式转义单引号:
SET @querySongFromId = 'SELECT * FROM SongTable WHERE SongId = '' ' + @songId + ' '' ';
但我收到"Incorrect syntax near '=' "
错误。
有人可以解释如何解决这个问题吗?
答案 0 :(得分:4)
DECLARE @querySongFromId NVARCHAR(MAX);
DECLARE @songId VARCHAR(100) = 'affgb:2c1'
SET @querySongFromId = 'SELECT * FROM SongTable WHERE SongId = @songId';
EXECUTE sp_executesql @querySongFromId,N'@songId VARCHAR(100)',@songId;