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
Retorna TRUE se o valor booleano efetivo de $arg for false e retorna FALSE se o valor booleano efetivo de $arg for true.
Sintaxe
fn:not($arg as item()*) as xs:boolean
Argumentos
$arg
Uma sequência de itens para os quais existe um valor booleano efetivo.
Exemplos
Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas xml type no banco de dados AdventureWorks.
Um. Usando a função not() XQuery para localizar modelos de produtos cujas descrições de catálogo não incluem o elemento> Especificações <.
A consulta a seguir constrói XML que contém IDs de modelo de produto para modelos de produto cujas descrições de catálogo não incluem o elemento <Specifications>.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
<Product
ProductModelID="{ sql:column("ProductModelID") }"
/>
') as Result
FROM Production.ProductModel
WHERE CatalogDescription.exist('
/pd:ProductDescription[not(pd:Specifications/*)] '
) = 0
Observe o seguinte da consulta anterior:
Como o documento usa namespaces, o exemplo usa a instrução WITH NAMESPACES. Outra opção é usar a palavra-chave declare namespace no XQuery Prolog para definir o prefixo.
Em seguida, a consulta constrói o XML que inclui o elemento <
Product> e seu atributo ProductModelID.A cláusula WHERE usa o método exist() (tipo de dados XML) para filtrar as linhas. O método exist() retornará True se houver <elementos ProductDescription> que não tenham <Specification> elementos filho. Observe o uso da função not().
Esse conjunto de resultados está vazio, porque cada descrição do catálogo de modelo de produto inclui o elemento><Especificações.
B. Usando a função not() XQuery para recuperar locais do centro de trabalho que não têm um atributo MachineHours
A consulta a seguir é especificada na coluna Instruções. Esta coluna armazena instruções de fabricação para os modelos de produtos.
Para um modelo de produto específico, a consulta recupera locais de centro de trabalho que não especificam MachineHours. Ou seja, o atributo MachineHours não é especificado para o elemento <Location>.
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
for $i in /AWMI:root/AWMI:Location[not(@MachineHours)]
return
<Location LocationID="{ $i/@LocationID }"
LaborHrs="{ $i/@LaborHours }" >
</Location>
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
Na consulta anterior, observe o seguinte:
O declarenamespace no XQuery Prolog define o prefixo do namespace de instruções de fabricação da Adventure Works. Ele representa o mesmo namespace usado no documento de instruções de fabricação.
Na consulta, o predicado not(@MachineHours) retornará True se não houver nenhum atributo MachineHours.
Este é o resultado:
ProductModelID Result
-------------- --------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
Limitações de implementação
Estas são as limitações:
- A função not() suporta apenas argumentos do tipo xs:booleano, ou node()*, ou a sequência vazia.