Share via


彙總函式 - count

適用於:SQL Server

傳回包含在$arg 指定序列中的專案數。

語法

  
fn:count($arg as item()*) as xs:integer  

引數

$arg
要計算的專案。

備註

如果 $arg 是空序列,則傳回 0。

範例

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

A. 使用 count() XQuery 函式來計算產品型號製造中的工作中心位置數目

下列查詢會計算產品型號製造程式中的工作中心位置數目(ProductModelID=7)。

SELECT Production.ProductModel.ProductModelID,   
       Production.ProductModel.Name,   
       Instructions.query('  
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
       <NoOfWorkStations>  
          { count(/AWMI:root/AWMI:Location) }  
       </NoOfWorkStations>  
') as WorkCtrCount  
FROM Production.ProductModel  
WHERE Production.ProductModel.ProductModelID=7  

請注意下列項目是從上一個查詢而來:

  • XQuery Prolog 中的 namespace 關鍵字會定義命名空間前置詞。 然後,會在 XQuery 主體中使用前置詞。

  • 查詢會建構包含 專案的 <NoOfWorkStations> XML。

  • XQuery 主體中的 count() 函式會計算元素的數目 Location<> 。

以下是結果:

ProductModelID   Name                 WorkCtrCount       
-------------- ---------------------------------------------------  
7             HL Touring Frame  <NoOfWorkStations>6</NoOfWorkStations>     

您也可以建構 XML 以包含產品模型識別碼和名稱,如下列查詢所示:

SELECT Instructions.query('  
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
       <NoOfWorkStations  
             ProductModelID= "{ sql:column("Production.ProductModel.ProductModelID") }"   
             ProductModelName = "{ sql:column("Production.ProductModel.Name") }" >  
          { count(/AWMI:root/AWMI:Location) }  
       </NoOfWorkStations>  
') as WorkCtrCount  
FROM Production.ProductModel  
WHERE Production.ProductModel.ProductModelID= 7  

以下是結果:

<NoOfWorkStations ProductModelID="7"   
                  ProductModelName="HL Touring Frame">6</NoOfWorkStations>  

您可以傳回這些值做為非 xml 類型,而不是 XML,如下列查詢所示。 查詢會使用 value() 方法 (xml 資料類型) 來擷取工作中心位置計數。

SELECT  ProductModelID,   
        Name,   
        Instructions.value('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
           count(/AWMI:root/AWMI:Location)', 'int' ) as WorkCtrCount  
FROM Production.ProductModel  
WHERE ProductModelID=7  

以下是結果:

ProductModelID    Name            WorkCtrCount  
-------------- ---------------------------------  
7              HL Touring Frame        6     

另請參閱

針對 xml 資料類型的 XQuery 函式