İşlev (XQuery)
Varsa true döndürür etkili Boole değeri $arg yanlış olduğunu ve false döndürür etkili Boole değeri $arg ise true.
Sözdizimi
fn:not($arg as item()*) as xs:boolean
Bağımsız değişkenler
- $arg
Orada olduğu etkili Boole öğelerin sırası.
Örnekler
Bu konuda çeşitli içinde depolanan xml örnekleri karşı XQuery örnekler sağlar xml sütunları yazın AdventureWorks2008R2 veritabanı.Bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks2008R2 veritabanında.
A.Not() XQuery kullanarak işlev Bul Ürün modelleri, katalog açıklamaları eklemek için <belirtimleri> öğesi.
Ürün modelleri, katalog açıklamaları eklemek için ürün modeli kimlikleri içeren xml aşağıdaki sorgu yapıları <Specifications> öğesi.
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;
Önceki sorgudan aşağıdakilere dikkat edin:
Ad alanlarýný belgenin kullandığı için örnek ad ALANLARIYLA kullandığı deyim.Başka bir seçenek kullanmak için ise declare namespace bir anahtar sözcük XQuery önsöz önekini tanımlamak için.
Sorguyu sonra içeren xml yapıları <Product> öğesi ve onun ProductModelID öznitelik.
where yan tümce tümce tümce kullanan exist() yöntem (xml veri türü) satırları süzmek için.The exist() method returns True if there are <ProductDescription> elements that do not have <Specification> child elements.Kullanımına dikkat edin not() işlev.
Çünkü her ürün modeli katalog açıklamasını içerir bu sonuç küme boş, <belirtimleri> öğesi.
B.Not() XQuery kullanarak işlev MachineHours özniteliğine sahip olmayan iş merkezi konumları almak için
Aşağıdaki sorgu yönergeleri sütun karşı belirtilir.Bu sütun için Ürün modellerinde üretim yönergeleri saklar.
Belirli bir ürün modeli için sorgu MachineHours belirtmek iş merkezi konumları alır.Diğer bir deyişle, öznitelik MachineHours için belirtilen <yere> öğesi.
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;
Önceki sorgu, aşağıdakilere dikkat edin:
The declare namespace in XQuery Prolog defines the Adventure Works manufacturing instructions namespace prefix.Üretim yönergelerinde kullanılan aynı ad alanını gösteren belge.
Query'de, not(@MachineHours) yüklemi varsa True döndürür yok MachineHours öznitelik.
Bu sonucu verir:
ProductModelID Result
-------------- --------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
Uygulama kısıtlamaları
Sınırlamalar şunlardır:
- The not() function only supports arguments of type xs:boolean, or node()*, or the empty sequence.