我有一个这样的 SQL 查询字符串:
DECLARE @sql varchar(max)
SET @sql = ' INSERT INTO ' + @tempTable1 +
' SELECT 0 as Type1, 0 as Type2, ' +
'''' + @name + ''' as CompanyName ' +
' FROM #tempTable2 tt2'
除了碰巧包含单引号的两个名称(例如:Pete's Corner)外,查询运行良好。当这些名称中的任何一个成为查询的一部分时,它会破坏查询字符串。我认为最简单的方法是像这样替换单引号 replace(@name,'''','') 但它不起作用,因为我已经在一个字符串中,所以它会影响其余的该声明。不幸的是,改变桌子本身不是一种选择。
如何替换或删除这些单引号?
另外:我很抱歉,我没有包括 @name 实际上是通过连接从另一个数据库表中填充的部分,所以在创建字符串之前设置 @name 的值我认为对我来说很困难。