Sql 使用查询选择xml数据

Sql 使用查询选择xml数据,sql,sql-server,Sql,Sql Server,我需要一些从xml查询数据的帮助 这是我使用的xml和查询 我可以返回除PhonetypeCode值为“19”之外的所有值,我不确定是否正确。 请提供任何帮助您可以这样做- select xmldata.p.value('./PhoneTypeCode[1]/@tc', 'int') as [PhoneTypeCode] from @XML.nodes('/Phone') xmldata(p); DECLARE @XML XML; SET @XML = CAST('<Phone>

我需要一些从xml查询数据的帮助

这是我使用的xml和查询

我可以返回除PhonetypeCode值为“19”之外的所有值,我不确定是否正确。

请提供任何帮助

您可以这样做-

select xmldata.p.value('./PhoneTypeCode[1]/@tc', 'int') as [PhoneTypeCode]
from @XML.nodes('/Phone') xmldata(p);
DECLARE @XML XML;
SET @XML = CAST('<Phone>
                   <PhoneTypeCode tc="19"/>
                   <CountryCode>US</CountryCode>
                   <AreaCode>217</AreaCode>
                   <DialNumber>8332046</DialNumber>
                 </Phone>' AS XML);
SELECT p.value('(.//@tc)[1]','int') AS PhoneTypeCode,
       p.value('data(CountryCode[1])','varchar(50)') AS CountryCode,
       p.value('data(AreaCode[1])','int') AS AreaCode,
       p.value('data(DialNumber[1])','int') AS DialNumber
FROM @XML.nodes('/Phone') xmlData(p);
DECLARE@XML;
SET@XML=CAST('
我们
217
8332046
'作为XML);
选择p.value('(./@tc)[1]',int')作为PhoneTypeCode,
p、 值('data(CountryCode[1]),'varchar(50')作为CountryCode,
p、 值('data(AreaCode[1]),'int'),作为区号,
p、 值('data(DialNumber[1]),'int')作为DialNumber
来自@XML.nodes('/Phone')的xmlData(p);