Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
Возвращает количество элементов, содержащихся в последовательности, указанной $arg.
Синтаксис
fn:count($arg as item()*) as xs:integer
Аргументы
$arg
Подсчитываемые элементы.
Замечания
Возвращает значение 0, если $arg является пустой последовательностью.
Примеры
В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типа XML в базе данных AdventureWorks.
А. Использование функции XQuery count() для подсчета количества различных географических расположений цехов, участвующих в производстве определенной модели продукта
Следующий запрос подсчитывает количество цехов, участвующих в производстве продукта определенной модели (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 определяет префикс пространства имен. Затем этот префикс используется в теле запроса XQuery.
Запрос создает XML, включающий <
NoOfWorkStations> элемент.Функция count() в теле XQuery подсчитывает количество <
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, как показано в следующем запросе. Запрос использует метод 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