SQL解析XML字段为表格返回全NULL问题求解
问题原因
原SQL的XPath写法逻辑错误:存储的XML内容中,foo1、foo2、foo3是<row>节点的属性,而非<row>节点下的子元素。原语句中foo1[1]的写法是查找当前节点下名为foo1的第一个子元素,无法匹配到对应内容,因此所有字段返回值均为NULL。
修正后的SQL语句
读取XML节点属性时,需要在属性名前加@前缀做标识,修改后即可得到预期结果:
SELECT n.x.value('@foo1[1]', 'Varchar(10)') as foo1, n.x.value('@foo2[1]', 'Varchar(10)') as foo2, n.x.value('@foo3[1]', 'Varchar(10)') as foo3 FROM Table1 CROSS APPLY Field1.nodes('/row') n(x)
相关XPath基础规则
- 直接写名称:匹配当前节点路径下的同名子元素
- 名称前加
@:匹配当前节点上的同名属性
内容的提问来源于stack exchange,提问作者goryef
相关产品推荐
相关产品推荐

