Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Returnerar SANT om det effektiva booleska värdet av $arg är falskt, och returnerar FALSE om det effektiva booleska värdet av $arg är sant.
Syntax
fn:not($arg as item()*) as xs:boolean
Arguments
$arg
En sekvens av objekt för vilka det finns ett effektivt boolesk värde.
Examples
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks-databasen.
A. Använd funktionen not() XQuery för att hitta produktmodeller vars katalogbeskrivningar inte inkluderar <Specifikationer-elementet> .
Följande fråga konstruerar XML som innehåller produktmodell-ID för produktmodeller vars katalogbeskrivningar inte inkluderar elementet <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
Observera följande från föregående fråga:
Eftersom dokumentet använder namnrymder använder exemplet satsen WITH NAMESPACES. Ett annat alternativ är att använda deklarationsnyckelordet namnrymder i XQuery Prolog för att definiera prefixet.
Frågan konstruerar sedan XML:en som inkluderar elementet <
Product> och dess ProductModelID-attribut .WHERE-klausulen använder exist()-metoden (XML-datatyp) för att filtrera raderna. Exist()-metoden returnerar True om det finns <ProductDescription-element> som inte har <Specifikationsbarn-element>. Observera användningen av funktionen not().
Denna resultatmängd är tom, eftersom varje produktmodellkatalogbeskrivning innehåller elementet <Specifikationer> .
B. Att använda funktionen not() XQuery för att hämta arbetsplatsplatser som inte har ett attribut MachineHours
Följande fråga anges i kolumnen Instruktioner. Denna kolumn lagrar tillverkningsinstruktioner för produktmodellerna.
För en viss produktmodell hämtar sökningen arbetsplatsplatser som inte specificerar MachineHours. Det vill säga, attributet MachineHours är inte specificerat för elementet <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
I föregående fråga, notera följande:
Declarenamespace i XQuery Prolog definierar Adventure Works tillverkningsinstruktioners namnrymdsprefix. Den representerar samma namnrymd som används i tillverkningsinstruktionsdokumentet.
I frågan returnerar predikatet not(@MachineHours) True om det inte finns något attribut MachineHours .
Det här är resultatet:
ProductModelID Result
-------------- --------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
Implementeringsbegränsningar
Det här är begränsningarna:
- Not () -funktionen stöder endast argument av typen xs:boolean, eller node()*, eller den tomma sekvensen.