【发布时间】:2019-05-06 15:35:25
【问题描述】:
我正在尝试构建动态 SQL 查询。变量@NSQL 包含使用关键字<<INNERJOINKEYWORD>> 作为最后一个连接条件的SQL 查询。
SET @NSQL = 'SELECT * FROM CLIENT
<<INNERJOINKEYWORD>>'
SET @NSQL = REPLACE(@NSQL,'<<INNERJOINKEYWORD>>',' INNER JOIN #TempTable ON Client.Name = #TempTable.ClientName')
这项工作正常。
现在我正在尝试将其转换为动态 SQL LIKE 查询,如下所示:
SET @NSQL = REPLACE(@NSQL,'<<INNERJOINKEYWORD>>',' INNER JOIN #TempTable ON Client.Name LIKE ''%#TempTable.ClientName%'')
当我执行SELECT @NSQL 时,文本“#TempTable.ClientName”是查询的一部分,如何使其动态化?
【问题讨论】:
-
应该是
LIKE #TempTable.ClientName + ''%'' -
@Squirrel:差不多。 :) 你忘了前导 %。
-
每次使用动态 SQL 时,我都会先执行
print @sql,然后再执行exec(@sql)。这样,我可以在执行之前看到最终结果。这是调试动态 SQL 语句的简单方法,尤其是当它们生成的 sql 足够容易校对时。 -
print @sql 与我看到动态 SQL 所做的相同 - SELECT @NSQL?
标签: sql sql-server