如何在T-SQL SELECT语句的输出中将单引号切换为双引号

时间:2010-12-28 19:28:24

标签: sql-server tsql

我正在尝试为表中的数据创建INSERT SQL脚本。 (类似于脚本中内置的SQL Server)

DECLARE @HEADER varchar(255)

SET @HEADER = 'insert into Table ( Column1 , Column2)
values ( N'''

SELECT 
@Header + Column1 + ''', N''' + Column2 + ''')'
+ CHAR(10)
FROM Table
ORDER BY Column1

在Column1中,我有包含单引号的文本,我需要它作为双单引号文本出现,就像直接从SQL Server使用“生成脚本”时那样。

3 个答案:

答案 0 :(得分:4)

使用REPLACE函数加倍引号,您需要将结果字符串包装在引号中。请注意,这适用于NOT NULL列,因此如果您需要支持可为空的列,请进行调整。

SELECT
  'INSERT INTO Table (Column1, Column2) VALUES (N''' +
     REPLACE(Column1, '''', '''''') + ''', N''' +
     REPLACE(Column2, '''', '''''') + ''')'
FROM Table
ORDER BY Column1

答案 1 :(得分:2)

您可以使用QUOTENAME功能。

SELECT 
@Header + QUOTENAME(Column1) + ''', N''' + Column2 + ''')'
+ CHAR(10)
FROM Table
ORDER BY Column1

答案 2 :(得分:0)

我猜您想要根据现有表生成插入脚本吗?

我建议您下载SSMS Tools。这是一个很好的附加功能,可以与SSMS一起使用。其中一个功能允许您右键单击一个表,它将为您生成包含表中数据的插入脚本。