Udostępnij za pośrednictwem


Funkcja (XQuery)

Zwraca wartość PRAWDA, jeśli skuteczne wartość typu logiczny $arg ma wartość false, a następnie zwraca wartość FAŁSZ, jeżeli skuteczne wartość typu logiczny $arg ma wartość true.

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

Argumenty

  • $arg
    Sekwencja towarów, dla których logiczny skuteczne.

Przykłady

W tym temacie przedstawiono przykłady XQuery przed XML wystąpienia, które są przechowywane w różnych XML typu kolumny bazy danych AdventureWorks.Aby uzyskać ogólne informacje o każdej z tych kolumn zobacz xml Data Type Representation in the AdventureWorks Database.

A.Korzystanie z not() XQuery funkcja w celu znalezienia opisów katalog, którego modeli produktów nie należy dołączać <Specyfikacje> element.

Poniższa kwerenda tworzy XML zawierający modelu produktu identyfikatorów dla modeli produktów, których opisy wykazu nie należy dołączać <Specifications> element.

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

Pierwszy przycisk jest przyciskiem domyślnym.

  • Ponieważ dokument korzysta z przestrzeni nazw, próbka użyto instrukcja WITH obszarów nazw.Inną opcją jest użycie zadeklarować obszaru nazw słowo kluczowe w Prolog XQuery określają prefiks.

  • Kwerendy konstruuje następnie plik XML zawierający <Product> elementu i jego ProductModelID atrybut.

  • Użyto klauzula WHERE Metoda exist() (typ danych XML) do filtrowania wierszy.The exist() metoda returns True if there are <ProductDescription> elements that do not have <Specification> podrzędność elements. Należy zwrócić uwagę na użycie not() funkcja.

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

B.Za pomocą funkcja XQuery not() pobrać gniazda roboczego lokalizacje, które nie mają atrybut MachineHours

W następującej kwerendzie określono wobec kolumna instrukcji.W tej kolumnie są przechowywane wytwarzania instrukcji dotyczących modeli produktów.

W przypadku modelu produktu określonej lokalizacji środka pracy, które nie zostanie określony MachineHours pobieranych przez kwerendę.Oznacza to, atrybut MachineHours nie został określony dla elementu > < lokalizacji.

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 należy pamiętać o następujących kwestiach:

  • The declare namespace in XQuery Prolog defines the Adventure Works manufacturing instructions namespace prefix.Reprezentuje on tym samym obszarem nazw używanych w instrukcjach wytwarzania dokumentu.

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

To jest wynik:

ProductModelID Result 
-------------- --------------------------------------------
7              <Location LocationID="30" LaborHrs="1"/>
               <Location LocationID="50" LaborHrs="3"/>
               <Location LocationID="60" LaborHrs="4"/>

defaultButton

Ograniczenia są następujące:

  • The not() funkcja only supports arguments of type xs:logiczny, or node()*, or the empty sequence.