SQL中解析带属性的自闭合XML标签提取属性值问题咨询
解决方案
问题核心为原XPath表达式仅读取CHILD节点的内部文本,未指定读取属性值,调整XPath语法即可适配自闭合标签的属性读取需求,修正后的SQL如下:
select cast(xmlField as xml) xmlField into tmp from ( select '<Datas><CHILD value = "test"/></Datas>' xmlField ) tb SELECT xmlField.value('(Datas/CHILD/@value)[1]', 'nvarchar(max)') as Data FROM tmp drop table tmp
执行上述语句即可返回预期的test结果。
如果不需要临时表,也可以用简化写法直接处理业务表的对应字段:
SELECT CAST(xmlField AS XML).value('(Datas/CHILD/@value)[1]', 'nvarchar(max)') AS Data FROM 你的业务表名
补充说明:
@是XPath中取节点属性的标准语法,和标签是否为自闭合格式无关,只要属性定义符合XML规范都可以正常读取。
内容的提问来源于stack exchange,提问作者Marc Pfister
相关产品推荐
相关产品推荐

