Operadores XQuery em relação ao tipo de dados xml
Aplica-se a:SQL Server
A XQuery oferece suporte aos seguintes operadores:
Operadores numéricos (+, -, *, div, mod)
Operadores para comparação de valor (eq, ne, lt, gt, le, ge)
Operadores para comparação geral ( =, !=, <, >, <=, >= )
Para obter mais informações sobre esses operadores, consulte Expressões de comparação (XQuery)
Exemplos
a. Usando operadores gerais
A consulta ilustra o uso de operadores gerais que se aplicam a sequências, além de comparar sequências. A consulta recupera uma sequência de números de telefone para cada cliente da coluna AdditionalContactInfo da tabela Contact . Em seguida, essa sequência é comparada com a sequência de dois números de telefone ("111-111-1111", "222-2222").
A consulta usa o = operador de comparação. Cada nó na sequência no lado direito do = operador é comparado com cada nó na sequência no lado esquerdo. Se os nós corresponderem, a comparação de nós será TRUE. Em seguida, o nó será convertido em int, comparado com 1 e a consulta retornará o ID do cliente.
WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo' AS ACI,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes' AS ACT)
SELECT ContactID
FROM Person.Contact
WHERE AdditionalContactInfo.value('
//ACI:AdditionalContactInfo//ACT:telephoneNumber/ACT:number =
("111-111-1111", "222-2222")',
'bit')= cast(1 as bit)
Há outra maneira de observar como a consulta anterior funciona: cada valor de número de telefone recuperado da coluna AdditionalContactInfo é comparado com o conjunto de dois números de telefone. Se o valor estiver no conjunto, esse cliente será retornado no resultado.
B. Usando um operador numérico
O operador + nessa consulta é um operador de valor, pois se aplica a um único item. Por exemplo, o valor 1 é adicionado a um tamanho de lote retornado pela consulta:
SELECT ProductModelID, Instructions.query('
declare namespace
AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $i in (/AWMI:root/AWMI:Location)[1]
return
<Location LocationID="{ ($i/@LocationID) }"
LotSize = "{ number($i/@LotSize) }"
LotSize2 = "{ number($i/@LotSize) + 1 }"
LotSize3 = "{ number($i/@LotSize) + 2 }" >
</Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7
C. Usando um operador de valor
A consulta a seguir recupera os <Picture
> elementos de um modelo de produto em que o tamanho da imagem é "pequeno":
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
for $P in /PD:ProductDescription/PD:Picture[PD:Size eq "small"]
return
$P
') as Result
FROM Production.ProductModel
where ProductModelID=19
Como ambos os operandos para o operador eq são valores atômicos, o operador de valor é usado na consulta. Você pode escrever a mesma consulta usando o operador de comparação geral ( = ).
Consulte Também
Funções XQuery em tipos de dados xml
Dados XML (SQL Server)
Referência de linguagem Xquery (SQL Server)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de