Sql server 搜索并替换XML列中的值:值错误,值中有空格

Sql server 搜索并替换XML列中的值:值错误,值中有空格,sql-server,xml,parsing,sql-update,sqlxml,Sql Server,Xml,Parsing,Sql Update,Sqlxml,我尝试了在这个帖子上推荐的内容: 所以我试过了,有时也奏效了。例如,以下方法可行: UPDATE TestSET xmlCol = REPLACE( CAST( xmlCol as varchar(max) ), 'Value', 'NewValue') 以下操作将不起作用: UPDATE xmlTable SET xmlCol = REPLACE( CAST( xmlCol as varchar(max) ), 'Value', 'New Value') (新值和值之间的空间) 我收到一

我尝试了在这个帖子上推荐的内容:

所以我试过了,有时也奏效了。例如,以下方法可行:

UPDATE TestSET xmlCol = REPLACE( CAST( xmlCol as varchar(max) ), 'Value', 'NewValue')
以下操作将不起作用:

UPDATE xmlTable SET xmlCol = REPLACE( CAST( xmlCol as varchar(max) ), 'Value', 'New Value')
(新值和值之间的空间)

我收到一条错误消息:

Msg 9414,第16级,状态1,第1行XML解析:第1行,字符 824,预期相等

我不知道该怎么办,有什么想法吗?我正在尝试更新任何具有“Value”属性的元素


您有一个名为
Value
的属性名或元素名,或将
Value
作为其名称的一部分。
replace语句将替换所有出现的
,即使它是XML元素名称或属性名称的一部分。

替换将为您留下一个带有空格的属性名,这是不允许的。因此,当解析器在属性名中找到空格时,它会抱怨它,并要求使用等号。您的无效XML可能如下所示<代码>

为什么不使用适当的xml更新函数:

update xmlTable set xmlcol.modify('
    replace value of (/View/FunctionList/Function[@Name="VALUE"]/@Name)[1]
    with "New Value"
')

如果没有复制此错误的XML样本,加上您正在使用的值和新值,就不太可能有人能够回答此问题。该值是属性或元素的名称吗?我认为是元素的一个属性,它是XML的一个不完整部分。但是解释它应该在开头有一个标记,周围有一个名字的根节点,我可以得到一段可以使用的XML。我用空格尝试了你的更新声明,它没有问题。BTW re Function是一个元素名称=值是Function的属性(它是FunctionList的子元素)。
update xmlTable set xmlcol.modify('
    replace value of (/View/FunctionList/Function[@Name="VALUE"]/@Name)[1]
    with "New Value"
')