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
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Especifica um XQuery contra uma instância do tipo de dado xml . O resultado é do tipo xml . O método devolve uma instância de XML não tipado.
Sintaxe
query ('XQuery')
Arguments
XQuery
É uma string, uma expressão XQuery, que consulta nós XML, como elementos e atributos, numa instância XML.
Examples
Esta secção fornece exemplos de utilização do método query() do tipo de dado xml .
A. Usar o método query() contra uma variável do tipo xml
O exemplo seguinte declara uma variável @myDoc do tipo xml e atribui-lhe uma instância XML. O método query() é então usado para especificar um XQuery contra o documento.
A consulta recupera o <Features> elemento filho do <ProductDescription> elemento:
DECLARE @myDoc XML
SET @myDoc = '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>'
SELECT @myDoc.query('/Root/ProductDescription/Features')
O resultado seguinte mostra o resultado:
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
B. Usar o método query() contra uma coluna de tipo XML
No exemplo seguinte, o método query() é usado para especificar um XQuery contra a coluna CatalogDescription do tipo xml na base de dados AdventureWorks :
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
<Product ProductModelID="{ /PD:ProductDescription[1]/@ProductModelID }" />
') as Result
FROM Production.ProductModel
where CatalogDescription.exist('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
declare namespace wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain";
/PD:ProductDescription/PD:Features/wm:Warranty ') = 1
Note os seguintes elementos da consulta anterior:
A coluna CatalogDescription é uma coluna xml tipada, o que significa que tem uma coleção de esquemas associada. No prólogo XQuery, a palavra-chave do namespace define o prefixo que é posteriormente usado no corpo da consulta.
O método query() constrói XML, um <
Product> elemento que tem um atributo ProductModelID , no qual o valor do atributo ProductModelID é recuperado da base de dados. Para mais informações sobre construção XML, consulte XML Construction (XQuery).O método exist() (tipo de dado XML) na cláusula WHERE encontra apenas linhas que contêm o <
Warranty> elemento no XML. Mais uma vez, a palavra-chave namespace define dois prefixos de namespace.
O resultado seguinte mostra o resultado parcial:
<Product ProductModelID="19"/>
<Product ProductModelID="23"/>
...
Note que os métodos query() e exist() declaram ambos o prefixo PD. Nestes casos, pode usar WITH XMLNAMESPACES para definir primeiro os prefixos e usá-los na consulta.
WITH XMLNAMESPACES
(
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS PD,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS WM
)
SELECT CatalogDescription.query('<Product ProductModelID="{ /PD:ProductDescription[1]/@ProductModelID }" />')
AS Result
FROM Production.ProductModel
WHERE CatalogDescription.exist('/PD:ProductDescription/PD:Features/WM:Warranty ') = 1;
Ver também
Adicionar namespaces a consultas com WITH XMLNAMESPACES
Comparar XML digitado com XML não tipado
Criar instâncias de dados XML
Métodos de Tipos de Dados XML
Linguagem de Modificação de Dados XML (XML DML)