【发布时间】:2016-02-15 08:19:00
【问题描述】:
**已回答
我正在尝试创建一个触发器,当用户从我们的网站插入或更新新数据时,该触发器将用适当的撇号 ' 替换字符 ’(MS Word 智能引用)。
特殊撇号可以在 5000 NVarchar 列的任何位置找到,并且可以在同一字符串中多次找到。
有什么简单的替换语句吗?
REPLACE(Column,'’','''')
【问题讨论】:
-
我建议您制作一个标量函数,以 nvarchar(5000) 作为输入,使用循环替换并返回 nvarchar(5000) 值。然后在你的触发器中使用这个函数。
-
@Adish 为什么建议创建标量函数和循环?这是绝对最慢的方法。 OP 发布的替换语句将比具有另一个性能终止循环的性能终止标量函数要好得多。
-
我会使用您发布的 REPLACE。它将用 ' 替换所有 ' 实例,并且速度非常快。
-
@SeanLange 是的,你是对的。我的建议不正确。我正在考虑一种场景,其中有连续字符被相同/另一个字符的一个实例替换,例如 4 个空格或 3 个空格被 1 个空格替换。这不是这里的要求。感谢您指出。
-
即使有多个空格,您也可以在没有任何循环的情况下做到这一点。 :) 如果你需要这种技术,你可以在这里阅读。 sqlservercentral.com/articles/T-SQL/68378
标签: sql sql-server regex