Liczba funkcja (XQuery)

Zwraca liczbę elementów, które są zawarte w kolejności określonej przez $arg.

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

Argumenty

  • $arg
    Elementy do zliczania.

Remarks

Zwraca wartość 0, jeśli $arg jest sekwencją puste.

Przykłady

W tym temacie przedstawiono przykłady XQuery przed XML wystąpienia, które są przechowywane w różnych XML typu kolumny bazy danych AdventureWorks.Aby uzyskać ogólne informacje o każdej z tych kolumn zobacz xml Data Type Representation in the AdventureWorks Database.

A.Za pomocą funkcja XQuery count() do policzenia, ile pracy lokalizacji środka do wytworzenia modelu produktu

Następująca kwerenda oblicza liczbę lokalizacji środka pracy w procesie produkcyjnym modelu produktu (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

Pierwszy przycisk jest przyciskiem domyślnym.

  • The namespace keyword in XQuery Prolog defines a namespace prefix.Prefiks jest następnie używana w treści XQuery.

  • Kwerendy konstrukcji XML, który zawiera <NoOfWorkStations> element.

  • The count() funkcja in the XQuery body counts the number of <Location> elements.

To jest wynik:

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

Można również utworzyć XML IDENTYFIKATORA modelu produktu i nazwę, jak pokazano w następującej kwerendzie:

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

To jest wynik:

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

Zamiast XML możesz powrócić te wartości jako typu nie-danych xml, jak pokazano w następującej kwerendzie.W kwerendzie użyto Metoda Value() (typ danych xml) pobrać liczby lokalizacji środka pracy.

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

To jest wynik:

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