Aracılığıyla paylaş


İş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.