Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Todos os exemplos em expressões de caminho (XQuery) usam sintaxe não abreviada para expressões de caminho. A sintaxe não abreviada para uma etapa de eixo em uma expressão de caminho inclui o nome do eixo e o teste de nó, separados por dois pontos duplos e seguidos por zero ou mais qualificadores de etapa.
Por exemplo:
child::ProductDescription[attribute::ProductModelID=19]
XQuery suporta as seguintes abreviaturas para uso em expressões de caminho:
O
childeixo é o eixo padrão. Portanto, ochild::eixo pode ser omitido de uma etapa em uma expressão. Por exemplo,/child::ProductDescription/child::Summarypode ser escrito como/ProductDescription/Summary.Um
attributeeixo pode ser abreviado como @. Por exemplo,/child::ProductDescription[attribute::ProductModelID=10]pode ser escrito como/ProductDescription[@ProductModelID=10].A
/descendant-or-self::node()/pode ser abreviado como //. Por exemplo,/descendant-or-self::node()/child::act:telephoneNumberpode ser escrito como//act:telephoneNumber.A consulta anterior recupera todos os números de telefone armazenados na coluna AdditionalContactInfo na tabela Contato. O esquema para AdditionalContactInfo é definido de forma que um elemento <phoneNumber> possa aparecer em qualquer lugar do documento. Portanto, para recuperar todos os números de telefone, você deve pesquisar cada nó no documento. A pesquisa começa na raiz do documento e continua através de todos os nós descendentes.
A consulta a seguir recupera todos os números de telefone de um contato de cliente específico:
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;Se você substituir a expressão de caminho pela sintaxe abreviada,
//act:telephoneNumber, receberá os mesmos resultados.O
self::node()em uma etapa pode ser abreviado para um único ponto (.). No entanto, o ponto não é equivalente ou intercambiável com oself::node().Por exemplo, na consulta a seguir, o uso de um ponto representa um valor e não um nó:
("abc", "cde")[. > "b"]O
parent::node()passo in a pode ser abreviado para um ponto duplo (..).