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.