Sql server 2008 T-SQL:使用SELECT语句显示XML数据

Sql server 2008 T-SQL:使用SELECT语句显示XML数据,sql-server-2008,tsql,Sql Server 2008,Tsql,我有以下XML文本: <Elements> <imported> <product name="Software #">0 </product> <product name="Hardware">1000 Pieces </product> <product name="Parts">300 </product> <pr

我有以下XML文本:

 <Elements>
    <imported>
        <product name="Software #">0 </product>
        <product name="Hardware">1000 Pieces  </product>
        <product name="Parts">300 </product>
        <product name="Wholes sales">1000</product>
        <product name="Cars">Audi (10) Porche (22) Skoda (48)</product>
        <product name="Final Report">0</product>
    </imported>
</Elements>

我正在使用SQL Server 2008。

我认为您可以在将字符串转换为xml后使用查询,如下所示:

DECLARE @x xml = @xml;

SELECT 
    c.value('@name', 'nvarchar(MAX)') AS Column1,
    c.value('.[1]', 'nvarchar(MAX)') AS Column2

FROM 
    @x.nodes('/Elements/imported/product') As t(c);
SELECT 
    c.value('@name', 'nvarchar(MAX)') AS Column1,
    c.value('.[1]', 'nvarchar(MAX)') AS Column2

FROM 
    (SELECT CAST(@xml as xml) x) dt CROSS APPLY
    dt.x.nodes('/Elements/imported/product') As t(c);
或者像这样的内联转换:

DECLARE @x xml = @xml;

SELECT 
    c.value('@name', 'nvarchar(MAX)') AS Column1,
    c.value('.[1]', 'nvarchar(MAX)') AS Column2

FROM 
    @x.nodes('/Elements/imported/product') As t(c);
SELECT 
    c.value('@name', 'nvarchar(MAX)') AS Column1,
    c.value('.[1]', 'nvarchar(MAX)') AS Column2

FROM 
    (SELECT CAST(@xml as xml) x) dt CROSS APPLY
    dt.x.nodes('/Elements/imported/product') As t(c);

如果它看起来像XML,闻起来像XML,行为像XML——为什么它不存储为
XML
??这将是最明智的做法,然后在其上使用XQuery函数。这些不适用于
nvarchar(max)
…可能重复: