sql-server - 埋在节点内的 XML 值

标签 sql-server xml tsql

全新 XML,但不是 SQL。我有我们的应用程序供应商构建的数据,我正在尝试将其加载到表中:

<windowsets>
  <windows>
    <question>
      <id Value="81b25d-9385-sk3" />
      <displayname Value="Thermal Break" />
      <answername Value="Yes" />    
    </question>
    <question>
      <id Value="73v32k-2743-fd9" />
      <displayname Value="Panel Profile" />
      <answername Value="Medium Stille" />    
    </question>
  </windows>
</windowsets>

通过这里的其他帖子,我发现并得到了创建:

select
    t.x.value('(id [@Value]/text())[1]','varchar(100)') QuestionID,
    t.x.value('(displayname [@Value]/text())[1]','varchar(255)') DisplayName,
    t.x.value('(answername [@Value]/text())[1]','varchar(255)') AnswerName
from @xmlData.nodes('//windowsets/windows/question') as T(X)

但它会为所有列返回空值,我猜这是因为它需要以下格式:

<displayname>Panel Profile</displayname>

所以作为 XML 新手和我所做的所有搜索并没有帮助我理解如何更改代码以在值被埋在节点中时提取它(甚至不确定正确的术语我太新了) .

感谢您的帮助!

最佳答案

它被称为属性

要从 xml 中读取 attributes 尝试这样的事情

select
    t.x.value('(id/@Value)[1]','varchar(100)') QuestionID,
    t.x.value('(displayname/@Value)[1]','varchar(255)') DisplayName,
    t.x.value('(answername/@Value)[1]','varchar(255)') AnswerName
from @xmlData.nodes('//windowsets/windows/question') as T(X)

关于sql-server - 埋在节点内的 XML 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42230255/

相关文章:

sql - 添加附加列时,CROSS APPLY 查询非常慢

php - 多个表中的平均值的平均值

Ruby 从文件构建哈希

java - 在建立数据源连接之前获取 URL 值

sql - 在 SQL Server 中,ASC 关键字的用途是什么,因为 ASC 是默认值?

SQL 查询今天减去两个月的日期

sql-server - SQL SYNONYM 和性能

java - 无法在 JavaFX XML 文件中解析正确的图像 url

tsql - SQL 命令添加数据库图表

powershell - 如何编写PowerShell脚本来还原具有多个.trn文件的数据库以还原到某个时间点?