使用SQL从表中的xml提取节点值
但是似乎没有正确考虑名称空间。应该考虑默认名称空间 SQL使用SQL从表中的xml提取节点值,sql,xml,tsql,Sql,Xml,Tsql,但是似乎没有正确考虑名称空间。应该考虑默认名称空间 SQL SELECT config.Value('(/Recording//Mode)[1]', 'varchar(max)') as int FROM ModeConfiguration 屏幕截图 关于类型化XML主题的好链接:应该考虑默认名称空间 SQL SELECT config.Value('(/Recording//Mode)[1]', 'varchar(max)') as int FROM ModeConfiguration
SELECT
config.Value('(/Recording//Mode)[1]', 'varchar(max)') as int
FROM ModeConfiguration
屏幕截图
关于类型化XML主题的好链接:应该考虑默认名称空间 SQL
SELECT
config.Value('(/Recording//Mode)[1]', 'varchar(max)') as int
FROM ModeConfiguration
屏幕截图
关于类型化XML主题的好链接:这很有效:
+-------+------+
| Id | Mode |
+-------+------+
| 16607 | 1 |
+-------+------+
这起到了作用:
+-------+------+
| Id | Mode |
+-------+------+
| 16607 | 1 |
+-------+------+
我没有看到:CallRecordingMode的任何XML标记??更正了说明:选择config.Value(“(/Recording//Mode)[1]”,“varchar(max)”作为模式配置的int。我没有看到:CallRecordingMode的任何XML标记??更正了说明:选择config.Value(“(/Recording//Mode)[1]”,“varchar(max)”)作为modeconfiguration中的int,我尝试了此解决方案,但它不起作用:简单类型或“”元素不支持“text()”。如果还需要处理其他名称空间-“xmlns:i”或任何我遗漏的内容。@user11403920。似乎您的XML具有不同的结构。或者您的列绑定到XML模式(XSD)。这就是为什么在提问时提供一个可重复性最低的示例很重要的原因。我在答案中添加了一个屏幕截图。@user11403920,我添加了一个关于查询类型化XML主题的链接。我尝试了这个解决方案,但它不起作用。简单类型化或“”元素不支持“text()”。如果还需要处理其他名称空间-“xmlns:i”或任何我遗漏的内容。@user11403920。似乎您的XML具有不同的结构。或者您的列绑定到XML模式(XSD)。这就是为什么在提问时提供一个可重复性最低的示例很重要的原因。我在答案中添加了一个屏幕截图。@user11403920,我添加了一个关于查询类型化XML主题的链接。
select t.node.value('*:Mode[1]', 'int')
from ModeConfiguration
CROSS APPLY Config.nodes('*:Recording') t(node)
WHERE featurei=27;