Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Všechny příklady v Path Expressions (XQuery) používají neabbreviated syntaxi pro výrazy cesty. Neabbreviovaná syntaxe kroku osy ve výrazu cesty obsahuje název osy a test uzlu oddělený dvojitým dvojtečkam a za ním nula nebo více kvalifikátorů kroku.
Například:
child::ProductDescription[attribute::ProductModelID=19]
XQuery podporuje následující zkratky pro použití ve výrazech cesty:
Osa
childje výchozí osa. Proto lze osuchild::vynechat z kroku ve výrazu. Například/child::ProductDescription/child::Summarylze zapsat jako/ProductDescription/Summary.Osu
attributelze zkrátit na @. Například/child::ProductDescription[attribute::ProductModelID=10]lze zapsat jako/ProductDescription[@ProductModelID=10].A
/descendant-or-self::node()/může být zkrácena jako //. Například/descendant-or-self::node()/child::act:telephoneNumberlze zapsat jako//act:telephoneNumber.Předchozí dotaz načte všechna telefonní čísla uložená ve sloupci AdditionalContactInfo v tabulce Kontakt. Schéma AdditionalContactInfo je definováno způsobem, který <telephoneNumber> element může objevit kdekoli v dokumentu. Pokud tedy chcete načíst všechna telefonní čísla, musíte vyhledat každý uzel v dokumentu. Hledání začíná v kořenovém adresáři dokumentu a pokračuje ve všech následnických uzlech.
Následující dotaz načte všechna telefonní čísla pro konkrétní kontakt zákazníka:
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;Pokud výraz cesty nahradíte zkrácenou syntaxí,
//act:telephoneNumber, obdržíte stejné výsledky.V
self::node()kroku lze zkrátit na jednu tečku (.). Tečka však není ekvivalentní ani zaměnitelná s tečkouself::node().Například v následujícím dotazu představuje použití tečky hodnotu, nikoli uzel:
("abc", "cde")[. > "b"]V
parent::node()kroku lze zkrátit na dvojitou tečku (..).