Aracılığıyla paylaş


Yol Tanımlamaları - Kısaltılmış Sözdizimi Kullanma

Şunlar için geçerlidir: SQL Server

Yol İfadeleri'ndeki (XQuery) tüm örneklerde yol ifadeleri için uygun olmayan söz dizimi kullanılır. Yol ifadesindeki bir eksen adımının sıralanmamış söz dizimi, eksen adını ve düğüm testini, iki nokta üst üste ile ayrılmış ve ardından sıfır veya daha fazla adım niteleyicisi içerir.

Örneğin:

child::ProductDescription[attribute::ProductModelID=19]

XQuery, yol ifadelerinde kullanılmak üzere aşağıdaki kısaltmaları destekler:

  • Eksen child varsayılan eksendir. Bu nedenle, bir ifadedeki child:: bir adımdan eksen atlanabilir. Örneğin, /child::ProductDescription/child::Summary olarak /ProductDescription/Summaryyazılabilir.

  • Eksen attribute @ olarak kısaltılabilir. Örneğin, /child::ProductDescription[attribute::ProductModelID=10] olarak /ProductDescription[@ProductModelID=10]yazılabilir.

  • A /descendant-or-self::node()/ , // olarak kısaltılabilir. Örneğin, /descendant-or-self::node()/child::act:telephoneNumber olarak //act:telephoneNumberyazılabilir.

    Önceki sorgu, Kişi tablosundaki AdditionalContactInfo sütununda depolanan tüm telefon numaralarını alır. AdditionalContactInfo şeması, bir telephoneNumber> öğesinin belgenin herhangi bir <yerinde görünebileceği şekilde tanımlanır. Bu nedenle, tüm telefon numaralarını almak için belgedeki her düğümü aramanız gerekir. Arama belgenin kökünden başlar ve tüm alt düğümlerde devam eder.

    Aşağıdaki sorgu, belirli bir müşteri ilgili kişisinin tüm telefon numaralarını alır:

    SELECT AdditionalContactInfo.query('
                    declare namespace act="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes";
                    declare namespace crm="https://schemas.adventure-works.com/Contact/Record";
                    declare namespace ci="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo";
                    /descendant-or-self::node()/child::act:telephoneNumber
                    ') AS result
    FROM Person.Contact
    WHERE ContactID = 1;
    

    Yol ifadesini kısaltılmış söz dizimi ile değiştirirseniz, //act:telephoneNumberaynı sonuçları alırsınız.

  • self::node() Bir adımdaki, tek bir noktaya (.) kısaltılabilir. Ancak, nokta ile self::node()eşdeğer veya değiştirilebilir değildir.

    Örneğin, aşağıdaki sorguda nokta kullanımı bir düğümü değil bir değeri temsil eder:

    ("abc", "cde")[. > "b"]
    
  • parent::node() Bir adımdaki, çift noktaya (.. ) kısaltılabilir.