如何在SQL Server中修改动态查询?

时间:2016-05-20 19:12:15

标签: sql-server

我有一个存储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

1 个答案:

答案 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 = '';