更新中的 T-SQL 字符串替换
Posted
技术标签:
【中文标题】更新中的 T-SQL 字符串替换【英文标题】:T-SQL string replace in Update 【发布时间】:2011-05-20 00:37:46 【问题描述】:我需要更新列的值,对现有值进行子字符串替换。
例子:
数据包含abc@domain1
、pqr@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 字符串替换的主要内容,如果未能解决你的问题,请参考以下文章