SQL Server和XML:如何从sql表中获取xml属性?

阿德罗斯

我有一个这样的表:

create table product 
(
    id integer, 
    category varchar(50), 
    quantity integer, 
    techdata varchar(100), 
    cost_price float
);

insert into product 
values (1, 'window', 2, '<Data w="1000" h="1000"/>', 100.56),
       (2, 'door', 1, '<Data w="900" h="1800"/>', 96.12),
       (3, 'window', 20, '<Data w="750" h="300"/>', 152.5),
       (4, 'door', 100, '<Data w="1046" h="2046"/>', 46.74),
       (5, 'window', 1, null, null);

我必须从这些行中选择所有的“ w”和“ h”属性值。我已经尝试过此解决方案,但是它不起作用。

SELECT 
    t.p.value('(@w)[1]', 'VARCHAR(50)') AS width,
    t.p.value('(@h)[1]', 'VARCHAR(50)') AS height
FROM 
    product 
CROSS APPLY 
    techdata.nodes('/Data') t(p)

任何适当解决方案的提示?

itu

我认为您的问题是,techdata列不是XML类型。

尝试这个

select
    CONVERT(xml, techdata).value('(/Data/@w)[1]', 'int') as Width,
    CONVERT(xml, techdata).value('(/Data/@h)[1]', 'int') as Height
from product

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从SQL Server中的表查询Xml值和属性?

如何从SQL Server中的xml数据中获取带有条件的子元素和属性值?

SQL表中的XML-SQL Server

属性的XML方法在SQL Server 2012中获取NULL值

从sql中的xml获取属性和元素值

如何从 SQL Server 中的表中解析 XML

如何从 SQL Server 中的 XML 列中获取数据?

如何在SQL Server中根据条件获取xml节点

在SQL Server中从XML创建HTML表

在SQL Server 2008中解析xml时在sql表中获取NULL

在SQL SERVER中获取XML结构

SQL Server和[text()]中的FOR XML PATH

XML 解析 - SQL Server 表中未知行和列的“非法 XML 字符”的错误消息

在SQL Server XML列中更改XML属性值

如何使用sql server在XML文档中获取包含具有给定属性值的子节点的节点?

如何从SQL中的XML获取指定的节点

如何从SQL中的XML获取价值

使用属性将XML导入SQL Server表

如何从包含XML名称空间的XML列中获取数据(SQL Server 2005)

如何查询SQL Server中的XML列?

如何更新 SQL Server 中的 xml 字段

如何在 SQL Server 中读取 xml?

根据属性值删除SQL Server表的XML列中的行

将具有属性的XML保存到SQL Server中的表

从SQL Server 2008表中的XML字段中提取简单属性

xml路径的SQL Server添加属性和值

SQL如何从Microsoft SQL Server查询文件中获取表?

在SQL Server 2012中读取具有动态行和属性的xml

如何用存储在 SQL Server 中不同表中的值替换 XML 中的字符串?