Aracılığıyla paylaş


değil işlevi (XQuery)

Varsa true döndürür etkili Boole değeri $argyanlış olduğunu ve eğer yanlış'ı verir etkili Boole değeri $argdoğrudur.

Sözdizimi

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

Bağımsız değişkenler

  • $arg
    İçin etkili bir Boole değeri olan öğelerin sırası.

Örnekler

Bu konu çeşitli depolanan xml örnekleri karşı XQuery örnekler sağlar xml AdventureWorks veritabanındaki sütunları yazın. Bu sütunlar genel bakış için bkz: DEL - xml Data Type Representation in the AdventureWorks2008R2 Database.

A.Ürün modelleri, katalog açıklamaları bulmak için not() XQuery işlevini kullanma dahil etmeyin <özellikler> öğesi.

Ürün modeli kimliği ürün modelleri, katalog açıklamaları dahil 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

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:

  • Namespaces belge kullandığı için örnek ile ad deyimini kullanır. Başka bir seçenek declare namespace anahtar kelime XQuery giriş önekini tanımlamak için.

  • Sorguyu sonra içeren bir xml yapıları <Product> eleman ve onun ProductModelID özniteliği.

  • where yan tümcesi kullanan exist() yöntemi (xml veri türü) satırları süzmek için. Exist() yöntemi, varsa True döndürür <ProductDescription> sahip olmayan öğeler <belirtimi> alt öğeleri. Kullanın not() işlevi.

Her ürün modeli katalog açıklamasını içerdiğinden bu sonuç kümesi boş, <özellikler> öğesi.

B.MachineHours özniteliğine sahip olmayan iş merkezi konumları almak için not() XQuery işlevini kullanma

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

Bir ürün modeli için sorgu MachineHours belirtmeyen iş merkezi konumları alır. Yani, öznitelik MachineHours için belirtilen <yer> öğ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 

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 sorgudan aşağıdakilere dikkat edin:

  • İlanad içinde XQuery giriş üretim yönergeleri ad alanı önekini Adventure Works tanımlar.  Üretim yönergeleri kullanılan aynı ad alanını gösterir belge.

  • Sorgu, not(@MachineHours) yüklem işlevi True olduğunda hiçbir MachineHours özniteliği.

Sonuç şudur:

ProductModelID Result 
-------------- --------------------------------------------
7              <Location LocationID="30" LaborHrs="1"/>
               <Location LocationID="50" LaborHrs="3"/>
               <Location LocationID="60" LaborHrs="4"/>

ProductModelID Result 
-------------- --------------------------------------------
7              <Location LocationID="30" LaborHrs="1"/>
               <Location LocationID="50" LaborHrs="3"/>
               <Location LocationID="60" LaborHrs="4"/>

Uygulama kısıtlamaları

Bu sınırlamalar şunlardır:

  • Not() işlevi yalnızca türü xs:boolean, veya node() veya boş sırası bağımsız değişkenleri destekler.

Ayrıca bkz.

Başvuru

Xml veri türü karşı XQuery işlevleri