我有一张表如下:
CREATE TABLE MyTable (
Content XML
)
我在MyTable
中插入了一些值:
INSERT INTO MyTable
VALUES('<As>
<A name="A_name_1">
<Bs>
<B name="B_name_1"></B>
</Bs>
</A>
<A name="A_name_2">
<Bs>
<B name="B_name_1"></B>
<B name="B_name_2"></B>
</Bs>
</A>
<A name="A_name_3">
<Bs>
<B name="B_name_1"></B>
<B name="B_name_2"></B>
<B name="B_name_3"></B>
</Bs>
</A>
</As>')
如何使用SQL Server查询MyTable
以获得如下结果?
我是在RDBMSs中查询xml的新手。请帮我!非常感谢你!
A B
-------- -----------
A_name_1 B_name_1
A_name_2 B_name_1
A_name_2 B_name_2
A_name_3 B_name_1
A_name_3 B_name_2
A_name_3 B_name_3
答案 0 :(得分:1)
您必须使用XML方法nodes()
(请参阅MSDN):
SELECT y.XmlCol.value('(@name)[1]', 'VARCHAR(100)') AS A_name,
z.XmlCol.value('(@name)[1]', 'VARCHAR(100)') AS B_name
FROM dbo.MyTable x
CROSS APPLY x.Content.nodes('As/A') y(XmlCol)
CROSS APPLY y.XmlCol.nodes('Bs/B') z(XmlCol)