在表上查询XML

时间:2014-10-10 17:27:03

标签: sql-server xml

我有一张表如下:

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 

1 个答案:

答案 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)
相关问题