使用SQL从表中的xml提取节点值

使用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

但是似乎没有正确考虑名称空间。

应该考虑默认名称空间

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
屏幕截图

关于类型化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;