2017-02-22 12 views
2

徹底的に検索して、複数のXML兄弟の値をクエリして取得する方法の例やガイダンスが見つかりませんでした。複数のXML兄弟を取得する方法 - SQL Server

1つの兄弟値を取得する方法には、多くの例があります。次のXMLフラグメント与え例えば

<StoreSurvey> 
    <AnnualSales>800000</AnnualSales> 
    <AnnualRevenue>80000</AnnualRevenue> 
    <BankName>United Security</BankName> 
    <BusinessType>BM</BusinessType> 
    <YearOpened>1996</YearOpened> 
    <Specialty>Mountain</Specialty> 
    <SquareFeet>21000</SquareFeet> 
    <Brands>2</Brands> 
    <Internet>ISDN</Internet> 
    <NumberEmployees>13</NumberEmployees> 
    <Products Type="Bikes"> 
    <Product>Mountain</Product> 
    <Product>Road</Product> 
    <Product>Racing</Product> 
    </Products> 
    <Products Type="Clothes"> 
    <Product>Jerseys</Product> 
    <Product>Jackets</Product> 
    <Product>Shorts</Product> 
    </Products> 
</StoreSurvey> 

私は<AnnualSales>の値を取得したい場合は、私は、クエリアナライザで次のステートメントを実行することができます

SELECT Survey_untyped.query('/StoreSurvey/AnnualSales') 
FROM Stores; 

結果セットがしますが正しく表示する

<AnnualSales>800000</AnnualSales> 

ただし、 <AnnualSales><AnnualRevenue>の両方を尋ねますか?どうすればいい?

クエリは次のように見ている結果セット提供する必要があります:私はそれらの値に加えて、兄弟値「BankName」の3をしたい場合は

<AnnualSales>800000</AnnualSales> 
<AnnualRevenue>80000</AnnualRevenue> 

または何を?結果セットは次のようになります:

<AnnualSales>800000</AnnualSales> 
    <AnnualRevenue>80000</AnnualRevenue> 
    <BankName>United Security</BankName> 

誰かがその答えを知っていますか?

答えて

2

self:: axisを使用しています。このXPathのは、要求されたとして

/StoreSurvey/*[self::AnnualSales or self::AnnualRevenue or self::BankName] 

は、あなたのXMLから

<AnnualSales>800000</AnnualSales> 
<AnnualRevenue>80000</AnnualRevenue> 
<BankName>United Security</BankName> 

を選択します。

+0

ありがとう、私はその構文 "自己"などを使用して使用する参照を見ていない。 (私は標準的なx-queryの例などを見てきました) – SharmaVenkati

+0

実際には、私はそこに "self"を見ていますが、 "現在のノード"を選択すると記述されていました。非常に多くの時間を節約できました。再度、感謝します。 – SharmaVenkati

+0

@SharmaVenkati:あなたのリクエストに応じてself :: axisリンクでアップデートされました。 – kjhughes

関連する問題