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"
')