如何为SQL Server表中的所有行返回XML列中特定属性的值?

Xed*_*con 3 sql xpath xquery

所以我花了一整天时间寻找使用xpath/xquery作为SQL Server查询的一部分来从XML数据列返回值无效的好例子.

这就是我想要做的.我在表中的XML数据列中有以下XML:

<Document ID="156">
  <Version>1.0</Version>
  <LastModifiedInVersion>1.0</LastModifiedInVersion>
  <Signatures />
  <Controls>
    <Control ID="TB1">
      <Value>Hello world!</Value>
    </Control>
  </Controls>
  <AutoKeys />
</Document>
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个SQL Server查询,它将返回节点ID属性的值Document.我想对表中的所有行执行此操作,并且所有XML数据都以完全相同的格式启动.

任何帮助将不胜感激!我真的需要一个干净的例子,我可以从那里拿走它!

mar*_*c_s 8

这就是表格的XML列中的整个XML?

在这种情况下,使用这样的东西:

SELECT
   (list of other columns),
   XmlColumn.value('(/Document/@ID)[1]', 'int') AS 'DocumentID'
FROM
   dbo.YourTable
Run Code Online (Sandbox Code Playgroud)

.value()调用基本上将XPath作为其第一个参数,并将T-SQL类型作为其第二个参数,并将该XML值作为给定的T-SQL数据类型返回给查询.

  • +0 - 如果我有任何投票,我会upvote :) (2认同)