我有一个像这样的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的值对我来说很困难。
最佳答案
我认为应该这样做:
DECLARE @sql varchar(max)
SET @sql = ' INSERT INTO ' + @tempTable1 +
' SELECT 0 as Type1, 0 as Type2, ' + ''''+
replace( @name ,'''','''''')+''''+' as CompanyName
FROM #tempTable2 tt2'