2016-12-06 96 views
0

在我的数据库中,我遇到了一个问题,就是如何将单引号转义出来,导致每次保存记录时都将其加倍。我已经解决了这个问题,但我需要清理它创建的混乱。SQL Server - 用单个撇号替换多个撇号

所以我想知道什么是最直接的方式来取代所有比单撇号更多的实例。因此,例如用'

替换''''''表中有许多不同数量的实例。

+0

你能展示一些样本数据和预期的结果吗? –

回答

3

尝试以下

UPDATE yourTable 
SET columnName = REPLACE(REPLACE(REPLACE(columnName,'''','<>'),'><',''),'<>','''') 

这一招这招就派上用场了相应的单实例替换任何字符的多个连续的实例。我在SO上找到了这个替代空间字符的单个空间的多个实例。

+0

非常危险。至少使用控制字符作为替代。 –

+0

很棒,对我很好,谢谢。 – Brian

1

这涉及到大量的单引号:

update t 
    set col = replace(col, '''''', ''''); 
-----------------------------^^** ^^ 

单引号的第一个字符串有6个单引号,第二个有四个。

^^**显示代表单引号的双引号。

+0

谢谢,但这只适用于特定数目的引号?我想要一个将取代所有实例的解决方案。因此,例如'''和''''''''都将被单引号替换。 – Brian

+0

我认为这将取代任何有2个singel报价的事件。替换函数找到前2个,用1替换,比找到下2个,依此类推... – GuidoG

+0

@Brian。 。 。我想当我用单引号来解决这个问题的时候,它只是连续两次。 mhasan的解决方案适用于任何数量。 –