彙總函式 - 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