【问题标题】:SQL Server - replace multiple apostrophes with single apostropheSQL Server - 用单个撇号替换多个撇号
【发布时间】:2016-12-11 15:04:24
【问题描述】:

在我的数据库中,我遇到了如何转义单引号的问题,导致每次保存记录时它们都会加倍。我现在已经解决了这个问题,但我需要清理它造成的混乱。

所以我想知道用一个单引号替换所有超过撇号的实例最直接的方法是什么。因此,例如将 ''''''' 替换为 '

表格中有许多不同数量的实例。

【问题讨论】:

  • 你能展示一些示例数据和预期的结果吗?

标签: sql sql-server


【解决方案1】:

试试下面这个技巧

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

这个技巧在用相应的单个实例替换任何字符的多个连续实例时非常方便。我在SO 上找到了这个,用于用单个空格替换多个空格字符实例。

【讨论】:

  • 非常危险。至少使用一个控制字符作为替代。
【解决方案2】:

这涉及到很多单引号:

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

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

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

【讨论】:

  • 谢谢,但这仅适用于特定数量的报价?我想要一个可以替换所有实例的解决方案。因此,例如 ''' 和 '''''''' 都将替换为单引号。
  • 我认为这将替换任何数量的具有 2 个单引号的事件。 replace 函数找到第一个 2,用一个替换它,然后找到下一个 2,依此类推...
  • @Brian 。 . .我想当我用单引号遇到这个问题时,它只是连续出现了两个。 mhasan 的解决方案适用于任何数量。
  • 无论如何,谢谢你的建议,戈登。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多