Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Wszystkie przykłady w wyrażeniach ścieżki (XQuery) używają niewybrażonej składni dla wyrażeń ścieżki. Niezbadana składnia kroku osi w wyrażeniu ścieżki zawiera nazwę osi i test węzła, oddzielony dwukropkiem, a następnie zero lub więcej kwalifikatorów kroków.
Przykład:
child::ProductDescription[attribute::ProductModelID=19]
Funkcja XQuery obsługuje następujące skróty do użycia w wyrażeniach ścieżki:
Oś
childjest osią domyślną.child::W związku z tym oś można pominąć z kroku w wyrażeniu. Można na przykład/child::ProductDescription/child::Summaryzapisać jako/ProductDescription/Summary.attributeOś można skrócić jako @. Można na przykład/child::ProductDescription[attribute::ProductModelID=10]zapisać jako/ProductDescription[@ProductModelID=10].A
/descendant-or-self::node()/może być skrócony jako //. Można na przykład/descendant-or-self::node()/child::act:telephoneNumberzapisać jako//act:telephoneNumber.Poprzednie zapytanie pobiera wszystkie numery telefonów przechowywane w kolumnie AdditionalContactInfo w tabeli Contact. Schemat parametru AdditionalContactInfo jest zdefiniowany w sposób, <w jaki element phoneNumber> może być wyświetlany w dowolnym miejscu dokumentu. W związku z tym, aby pobrać wszystkie numery telefonów, należy przeszukać każdy węzeł w dokumencie. Wyszukiwanie rozpoczyna się od katalogu głównego dokumentu i przechodzi przez wszystkie węzły podrzędne.
Następujące zapytanie pobiera wszystkie numery telefonów dla określonego kontaktu klienta:
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;Jeśli zastąpisz wyrażenie ścieżki skróconą składnią ,
//act:telephoneNumberotrzymasz te same wyniki.Element
self::node()w kroku można skrócić do pojedynczej kropki (.). Jednak kropka nie jest równoważna ani zamienna z .self::node()Na przykład w poniższym zapytaniu użycie kropki reprezentuje wartość, a nie węzeł:
("abc", "cde")[. > "b"]Znak
parent::node()w kroku można skrócić do podwójnej kropki (..).