Aracılığıyla paylaş


işlev (XQuery)

Varsa, DOğRU verir etkin Boole değeri $arg yanlış ve YANLıŞ verir etkin Boole değeri $arg geçerlidir.

fn:not($arg as item()*) as xs:boolean

Bağımsız değişkenler

  • $arg
    Var olan etkin olan bir Boole değeri öğelerin sırası.

Örnekler

Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunlarındaki AdventureWorks veritabanındaki.Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.

C.Ürün modelleri, katalog açıklamalarını bulmak için not() XQuery işlevini kullanarak. dahil <Belirtimleri> öğe.

Ürün modeli kimliği, katalog açıklamaları içermeyen Ürün modelleri için içeren XML aşağıdaki sorgu yapıları <Specifications> öğe.

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:

  • Belge ad kullandığından, örnek ad ALANLARı, WITH deyim kullanır.Başka bir seçenek kullanmaktır ad bildirin. anahtar sözcükXQuery giriş önekini tanımlamak için.

  • Sorguyu, ardından içeren XML yapıları <Product> öğe ve Productmodelıd özniteliği.

  • WHERE yan tümce kullanan EXIST() yöntem (XML veri türü) satırları süzmek için.The exist() yöntem returns True if there are <ProductDescription> elements that do not have <Specification> alt elements. Kullanımına dikkat edin Not() işlev.

Her bir ürün modeli katalog açıklamasını içerdiğinden bu sonuç kümesi boş olduğundan <Belirtimleri> öğe.

b.Bir MachineHours olmayan bir iş merkezi konumları almak için not() XQuery işlevini kullanarak öznitelik

Aşağıdaki sorgu yönergeleri sütun karşı belirtildi.Bu sütun, Ürün modelleri için üretim yönergeleri saklar.

Belirli bir ürün modeli için sorgu, MachineHours belirtmezseniz, iş merkezi konumları alır.Diğer bir deyişle, öznitelik MachineHours < konum > öğe için tarif edilmemiş.

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 

Yukarıdaki sorguda, 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 temsil ettiği belge.

  • Sorguda, Not(@MachineHours) hiçbir yüklemi true verir...MachineHours özniteliği.

Bu sonucu oluşur:

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() işlev only supports arguments of type xs:Boole, or node()*, or the empty sequence.