【发布时间】:2014-06-04 16:32:17
【问题描述】:
我在将数据收集到 SQL Server 表时导入了几个 XML 文件。
我需要查询此 XML 数据列,以将单个 XML 列转换为更结构化的表。
有人可以帮忙解释一下这里的语法吗,XML 结构有一个模式,因此一旦用 SQL XML.query 格式理解它应该很容易重复我想要的所有元素。
Select TOP 1
[XMLFILE].value('(/Objs/Obj[0]/TN)[0]','VARCHAR(MAX)') as TEST,
[XMLFILE].query('/Objs/Obj') as HEADERTEST,
[XMLFILE].query('/Ref[@id="0"]') as Property1
FROM
SQL_Table
上面只是为我尝试的每个模式返回一个空字符串。
我需要提取每个 obj [] 元素的名称和值。
XML 结构示例,即 objs 标头后跟 obj 节点 0 到 'x' 节点。
<?xml version="1.0"?>
<Objs xmlns="xxxx" Version="1.1.0.1">
<Obj RefId="0">
<TN RefId="0">
<T>xxxx/T>
<T>xxxxx</T>
<T>xxxx</T>
</TN>
<MS>
<S N="Name">xxxx</S>
<S N="Value">xxxx</S>
</MS>
</Obj>
<Obj RefId="1">
<TNRef RefId="0"/>
<MS>
<S N="Name">xxxxxx</S>
<S N="Value"/>
</MS>
</Obj>
<Obj RefId="2">
<TNRef RefId="0"/>
<MS>
<S N="Name">xxxxx</S>
<S N="Value"/>
</MS>
</Obj>
<Obj RefId="3">
<TNRef RefId="0"/>
<MS>
<S N="Name">xxxx</S>
<S N="Value"/>
</MS>
</Obj>
......
......
</Objs>
【问题讨论】:
-
看看这个问题的答案:stackoverflow.com/a/19165348/1208914它可能是重复的
标签: sql sql-server cross-join for-xml-path