【发布时间】:2010-09-15 08:16:49
【问题描述】:
我基本上有一个xml列,我需要在每条记录中查找并替换一个标签值。
【问题讨论】:
我基本上有一个xml列,我需要在每条记录中查找并替换一个标签值。
【问题讨论】:
对于任何真实的东西,我都会使用 xpaths,但有时您只需要一个快速而肮脏的解决方案:
您可以使用 CAST 将该 xml 列转换为常规 varchar,然后进行正常替换。
UPDATE xmlTable SET xmlCol = REPLACE( CAST( xmlCol as varchar(max) ), '[search]', '[replace]')
当您只需要运行快速查询来查找某些内容并且不想处理 xpath 时,同样的技术也使搜索 XML 变得轻而易举。
SELECT * FROM xmlTable WHERE CAST( xmlCol as varchar(max) ) LIKE '%found it!%'
编辑:只是想稍微更新一下,如果您收到一条消息,将一个或多个字符从 XML 转换为目标排序规则是不可能的,那么您只需要使用 nvarchar 即可支持unicode。
CAST( xmlCol as nvarchar(max) )
【讨论】:
set xmlCol.nodes('/somenode/someothernode[@id=sql:variable("@somevar")]/text') = 'blah' 那样做。不确定。 Michael 的回答可能会让您入门。
update my_table
set xml_column = replace(xml_column, "old value", "new value")
【讨论】: