更新中的 T-SQL 字符串替换

Posted

技术标签:

【中文标题】更新中的 T-SQL 字符串替换【英文标题】:T-SQL string replace in Update 【发布时间】:2011-05-20 00:37:46 【问题描述】:

我需要更新列的值,对现有值进行子字符串替换。

例子:

数据包含abc@domain1pqr@domain2等。

我需要更新这些值,以便将 @domain2 替换为 @domain1

【问题讨论】:

每列有多少个电子邮件地址? abc@domain1 和 pqr@domain2 在同一列吗? 是的 - 他们在同一列.. Search and replace part of string in database的可能重复 【参考方案1】:

REPLACE 的语法:

替换(字符串表达式,字符串模式,字符串替换)

所以你需要的 SQL 应该是:

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1')

【讨论】:

就我而言,我需要用单引号替换双引号。我用了下面的REPLACE([ColumnValue], '"', '''')。结尾是四个单引号。【参考方案2】:

如果有人关心NTEXT,请使用以下格式:

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable]

【讨论】:

该语句本身不执行更新。您需要执行以下操作: UPDATE [DataTable] SET SET [ColumnValue] = CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'domain2','domain1') AS NTEXT) FROM [DataTable]跨度> 【参考方案3】:
update YourTable
    set YourColumn = replace(YourColumn, '@domain2', '@domain1')
    where charindex('@domain2', YourColumn) <> 0

【讨论】:

在此答案中包含 where 子句是否比已接受的答案提供任何效率提升?

以上是关于更新中的 T-SQL 字符串替换的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 同时替换字符串中的两个值

t-sql 用户定义函数,用表中的查找替换文本

SQL 更新替换字符串中的部分文本

使用 python 中的 sed 替换字符串和更新文件

SQL更新和替换子字符串[重复]

SQL更新和替换子字符串[重复]