如何在SQL Server中读取XML指定属性值?解决返回NULL问题
解决SQL Server读取XML节点属性返回NULL的问题
你的XML数据中,<Row>的Name是属性而非子节点,你原来的代码用Name[1]是尝试获取子节点,这就是返回NULL的原因。同时你的SQL语法也存在小问题,nodes方法需要放在FROM子句中。
正确的实现代码
DECLARE @XML XML SELECT @XML = CAST(Data AS XML) FROM [Table] -- 用[]包裹关键字Table避免语法报错 SELECT y.value('@Name', 'varchar(100)') AS Name FROM @XML.nodes('//Row') AS x(y)
关键说明
- 使用
@Name来定位<Row>节点的Name属性,这是XPath中获取属性的标准写法 - 确保
nodes方法在FROM子句中,这是SQL Server处理XML节点的正确语法结构 - 如果你的表名确实是
Table,必须用方括号[]包裹,因为它是SQL Server的保留关键字
内容的提问来源于stack exchange,提问作者sai bharath
相关产品推荐
相关产品推荐

