我有一个存储SQL查询的表。我正在阅读并使用EXECUTE sp_executesql
执行它。我想知道,如果我想修改这个查询,我该怎么做?
如果我必须在最后添加一个变量,我可以这样做:
DECLARE @sql1 NVARCHAR(MAX), @var NVARCHAR(20)
SET @sql1 = (SELECT Query FROM Table WHERE ID = 123)
SET @var = ' AND CONDITION2'
PRINT @sql1 + @var
结果:
UPDATE Table SET VALUE1 WHERE CONDITION1 AND CONDITION2
但如果我想在两者之间添加一些东西,我不知道该怎么做。
查询:
DECLARE @sql NVARCHAR(MAX)
SET @sql = (SELECT Query FROM Table WHERE ID = 123)
PRINT @sql
实际结果:
UPDATE Table SET VALUE1 WHERE CONDITION1
预期:
UPDATE TOP (100) Table SET VALUE1 WHERE CONDITION1
答案 0 :(得分:3)
只需更改原始查询即可包含占位符
SET @sql = 'UPDATE {0} Table SET VALUE1 WHERE CONDITION1';
SET @top_condition = 'TOP(100)';
SET @sql = REPLACE(@sql,
'{0}',
CONVERT(varchar(max), @top_condition)
);
如果需要,您也可以删除顶部选项
SET @top_condition = '';