Udostępnij za pośrednictwem


Funkcja (XQuery)

Zwraca wartość PRAWDA, jeśli skuteczne wartość logiczna $arg ma wartość false, a następnie zwraca wartość FALSE, jeśli skuteczne wartość logiczna $arg jest true.

Składnia

fn:not($arg as item()*) as xs:boolean

Argumenty

  • $arg
    Sekwencja elementów, dla których jest skuteczne wartość logiczna.

Przykłady

W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML, które są przechowywane w różnych xml Wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.

A.Za pomocą funkcja XQuery not() znaleźć modeli produktów, których opisy wykazu nie zawierają <specyfikacji> elementu.

Następująca kwerenda konstrukcje XML zawierający modelu produktu identyfikatorów dla modeli produktów, których opisy wykazu nie zawierają <Specifications> elementu.

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;

Poniższe z poprzedniej kwerendy:

  • Ponieważ w dokumencie użyto nazw, próbki użyto instrukcja z obszarów nazw.Inną opcją jest użycie declare namespace słowo kluczowe w XQuery prologu zdefiniować prefiks.

  • Kwerenda konstruuje następnie XML, który zawiera <Product> elementu i jego ProductModelID atrybut.

  • Użyto klauzula WHERE exist(), metoda (typ danych XML) do filtrowania wierszy.exist() Metoda zwraca wartość PRAWDA, jeśli istnieją <ProductDescription> elementów, które nie mają <specyfikacji> elementów podrzędność.Uwaga Użycie not() funkcja.

Ten zestaw wyników jest pusty, ponieważ każdy opis wykazu model produktu zawiera <specyfikacji> elementu.

B.Używanie funkcja XQuery not() do pobierania pracy Centrum lokalizacje, które nie mają atrybut MachineHours

Określono następujące kwerendy wobec kolumna instrukcje.Kolumna ta przechowuje instrukcje produkcji modeli produktów.

Model produktu określonej pracy Centrum lokalizacje, które nie określają MachineHours pobieranych przez kwerendę.Oznacza to, że atrybut MachineHours nie został określony dla <lokalizację> elementu.

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; 

W powyższym kwerendy Uwaga:

  • The declare namespace in XQuery Prolog defines the Adventure Works manufacturing instructions namespace prefix.Reprezentuje tych samych nazw używanych w produkcji instrukcje dokumentu.

  • W kwerendzie not(@MachineHours) predykat zwraca wartość PRAWDA, jeśli nie ma żadnych MachineHours atrybut.

Jest to wynikiem:

ProductModelID Result

-------------- --------------------------------------------

7 <Location LocationID="30" LaborHrs="1"/>

<Location LocationID="50" LaborHrs="3"/>

<Location LocationID="60" LaborHrs="4"/>

Ograniczenia wdrażania

Są następujące ograniczenia:

  • not() Funkcja obsługuje tylko argumenty typu xs:boolean lub bieżących * lub puste sekwencji.

Zobacz także

Odwołanie