布林值的相關函式 - not 函式

適用於:SQL Server

如果$arg 的有效布林值為 false,則傳回 TRUE,如果有效的布林值 $arg為 true,則傳回 FALSE。

語法

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

引數

$arg
有有效布林值的專案序列。

範例

本主題針對 AdventureWorks 資料庫中各種 xml 類型資料行中儲存的 XML 實例,提供 XQuery 範例。

A. 使用 not() XQuery 函式來尋找其目錄描述不包含 < Specifications > 元素的產品模型。

下列查詢會建構 XML,其中包含其目錄描述不包含 <Specifications> 元素之產品模型的產品模型識別碼。

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 NAMESPACES 語句。 另一個選項是使用 XQuery Prolog 中的 declare namespace 關鍵字來定義前置詞。

  • 然後,查詢會建構包含 元素及其 ProductModelID 屬性的 <Product> XML。

  • WHERE 子句會使用 exist() 方法 (XML 資料類型) 來篩選資料列。 如果 ProductDescription >< 元素沒有 < Specification > 子項目,則 exist() 方法會傳回 True。 請注意 not() 函式的使用

此結果集是空的,因為每個產品型號目錄描述都包含 < Specifications > 元素。

B. 使用 not() XQuery 函式來擷取沒有 MachineHours 屬性的工作中心位置

下列查詢是針對 [指示] 資料行所指定。 此資料行會儲存產品模型的製造指示。

針對特定產品模型,查詢會擷取未指定 MachineHours 的工作中心位置。 也就是說,不會為 < Location > 元素指定 MachineHours 屬性

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   

在上述查詢中,請注意下列事項:

  • XQuery Prolog 中的 declarenamespace 會定義 Adventure Works 製造指令命名空間前置詞。 它代表製造指示檔中所使用的相同命名空間。

  • 在查詢中,如果沒有 MachineHours 屬性, not(@MachineHours) 述詞會傳回 True。

以下是結果:

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

實作限制

以下是限制:

  • not() 式只支援 xs:boolean 或 node()* 類型的引數,或空序列。

另請參閱

針對 xml 資料類型的 XQuery 函式