Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
IGAZ értéket ad vissza, ha a $arg érvényes logikai értéke hamis, és hamis értéket ad vissza, ha az $arg érvényes logikai értéke igaz.
Szintaxis
fn:not($arg as item()*) as xs:boolean
Érvek
$arg
Olyan elemek sorozata, amelyeknek érvényes logikai értéke van.
Példák
Ez a témakör XQuery-példákat tartalmaz az AdventureWorks-adatbázis különböző xml- típusú oszlopaiban tárolt XML-példányokra.
Egy. A not() XQuery függvény használatával megkereshet olyan termékmodelleket, amelyek katalógusleírásai nem tartalmazzák a <Specifikációk> elemet.
Az alábbi lekérdezés olyan XML-fájlokat hoz létre, amelyek termékmodell-azonosítókat tartalmaznak olyan termékmodellekhez, amelyek katalógusleírásai nem tartalmazzák a <Specifications> elemet.
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
Jegyezze fel az előző lekérdezésben szereplő következőket:
Mivel a dokumentum névtereket használ, a minta a WITH NAMESPACES utasítást használja. Egy másik lehetőség a névtér deklarálása kulcsszó használata az XQuery Prolog az előtag meghatározásához.
A lekérdezés ezután összeállítja a <
Product> elemet és annak ProductModelID attribútumát tartalmazó XML-fájlt.A WHERE záradék a exist() metódust (XML-adattípus) használja a sorok szűréséhez. A létezik() metódus igaz értéket ad vissza, ha vannak <ProductDescription> elemek, amelyek nem rendelkeznek <Specifikáció> gyermekelemekkel. Figyelje meg a nem() függvény használatát.
Ez az eredménykészlet üres, mert minden termékmodell-katalógus leírása tartalmazza a <Specifikációk> elemet.
B. A not() XQuery függvény használata a MachineHours attribútummal nem rendelkező műhelyhelyek lekéréséhez
A következő lekérdezés az Utasítások oszlopban van megadva. Ez az oszlop a termékmodellekhez tartozó gyártási utasításokat tárolja.
Egy adott termékmodell esetében a lekérdezés olyan műhelyhelyeket kér le, amelyek nem adják meg a MachineHourst. Vagyis a MachineHours attribútum nincs megadva a <Hely> elemhez.
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
Az előző lekérdezésben jegyezze fel a következőket:
Az XQuery Prolog deklarnamespace határozza meg az Adventure Works gyártási utasítások névtérelőtagjait. A gyártási utasítások dokumentumában használt névteret jelöli.
A lekérdezésben a nem(@MachineHours) predikátum igaz értéket ad vissza, ha nincs MachineHours attribútum.
Ez az eredmény:
ProductModelID Result
-------------- --------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
Megvalósítási korlátozások
Ezek a korlátozások:
- A not() függvény csak az xs:logikai vagy csomópont()* típusú argumentumokat, illetve az üres sorozatot támogatja.
Lásd még:
XQuery-függvények xml adattípusú