迁移脚本:将'in data替换为''

时间:2016-05-05 18:57:33

标签: sql sql-server scripting varchar

如果有人回答我很抱歉,但我在搜索时找不到它。

我正在编写一个存储过程,它会生成一个迁移脚本,其中包含以下内容:

'insert into dbo.source_line_items (id, name, comment) 
                                    VALUES('
                                    + ' '+ CASE WHEN  id IS NULL THEN isnull(id,'NULL') ELSE ''''+ id   + '''' END + ', '
+ ' '+ CASE WHEN  name IS NULL THEN isnull(name,'NULL') ELSE ''''+ name   + '''' END + ', '
+ ' '+ CASE WHEN  comment IS NULL THEN isnull(comment,'NULL') ELSE ''''+ comment   + '''' END + ', '

这一般是正常的,但我正在迁移的一些数据中包含“中的字符”。因此,我生成一些像

这样的sql语句
insert into Table(id, name, comment) 
                                    VALUES('874', 'O'Brien',NULL)

当'在数据中时,是否有一种简单的方法让我的脚本自动替换'with'?

1 个答案:

答案 0 :(得分:2)

SQL Server使用双刻度来查找字符串中的单个刻度。像REPLACE()一样使用双重刻度:

REPLACE(name,'''','') --To remove ticks
REPLACE(name,'''','''''') --To replace single with double ticks

完整:

CASE WHEN name IS NULL THEN isnull(name,'NULL') 
ELSE ''''+ REPLACE(name,'''','''''') + '''' END