SQL Server 2012替换动态SQL中Select语句中的字符串
我想替换动态sql中select语句中的部分字符串,但收到错误 这是我的密码:SQL Server 2012替换动态SQL中Select语句中的字符串,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我想替换动态sql中select语句中的部分字符串,但收到错误 这是我的密码: set @oldTblPrefix = 'ABC' set @newTblPrefix = 'XYZ' set @sourcetid = 17 set @template =' INSERT INTO ' +@DB + '.[Tforms] (id ,[tablename]) select id, replace([tablename],
set @oldTblPrefix = 'ABC'
set @newTblPrefix = 'XYZ'
set @sourcetid = 17
set @template ='
INSERT INTO ' +@DB + '.[Tforms]
(id
,[tablename])
select id,
replace([tablename],'+@oldTblPrefix+','+@newTblPrefix+')
from '+ @DB+ '.[Tforms] where tid=' +str(@sourcetid)
exec sp_Executesql @template
但我收到了以下错误:
无效的列名“ABC”。列名“XYZ”无效
您需要在变量前后添加单引号,每边两个。一个显示在结果字符串中,另一个显示为转义字符 在最后用print替换execute,直到得到它,并检查结果查询是否正确
set @template ='
INSERT INTO ' +@DB + '.[Tforms]
(id
,[tablename])
select id,
replace([tablename],'''+@oldTblPrefix+''','''+@newTblPrefix+''')
from '+ @DB+ '.[Tforms] where tid=' +str(@sourcetid)
PRINT @template
--exec sp_Executesql @template
您需要在变量前后添加单引号,每边两个。一个显示在结果字符串中,另一个显示为转义字符 在最后用print替换execute,直到得到它,并检查结果查询是否正确
set @template ='
INSERT INTO ' +@DB + '.[Tforms]
(id
,[tablename])
select id,
replace([tablename],'''+@oldTblPrefix+''','''+@newTblPrefix+''')
from '+ @DB+ '.[Tforms] where tid=' +str(@sourcetid)
PRINT @template
--exec sp_Executesql @template