2010-07-05 21 views
14

kullanarak XML öğe adı alınıyor:ben varsa t-SQL

<quotes> 
    <quote> 
    <name>john</name> 
    <content>something or other</content> 
    </quote> 
    <quote> 
    <name>mary</name> 
    <content>random stuff</content> 
    </quote> 
</quotes> 

nasıl T-SQL kullanarak elemanı adları 'adıyla' ve 'içeriği' listesini alabilirim? tabii ki, bu işe alınamıyor,

declare @xml xml 
set @xml = ... 
select r.value('quotes/name()[1]', 'nvarchar(20)' as ElementName 
from @xml.nodes('/quotes') as records(r) 

Ama:

şimdiye kadar var en iyi

olduğunu.

cevap

25

Aslında, üzgünüm, bende en iyisi: Bu, tüm elemanların listesini verecektir

+0

Bilginize, çözüm bu yazı karşısında tökezleyerek geldi: http://stackoverflow.com/questions/2266132/how-can-i-get-a-list-of-element-names-from-an-xml-value-in -sql-server –

+0

Cevabınız gayet iyi. Ayrıca, bazı yararlı XML jimnastikleri için bu sütunu gözden geçirmek isteyebilirsiniz: http://beyondrelational.com/blogs/jacob/archive/2010/05/30/select-from-xml.aspx –

4
DECLARE @xml as xml 
SET @xml = '<Address><Home>LINE1</Home></Address>' 

SELECT Nodes.Name.query('local-name(.)') FROM @xml.nodes('//*') As Nodes(Name) 

benim kendi soruya cevap

select distinct r.value('fn:local-name(.)', 'nvarchar(50)') as t 
FROM 
    @xml.nodes('//quotes/*/*') AS records(r) 

Guess ...