我全新 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/