Sql server 2008 T-SQL:使用SELECT语句显示XML数据
我有以下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
<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)
…可能重复: