ceiling 函数 (XQuery)

返回不带小数部分并且不小于其参数的值的最小数字。如果参数是一个空序列,则返回空序列。

语法

fn:ceiling ( $arg as numeric?) as numeric?

参数

  • $arg
    将应用该函数的数字。

注释

如果 $arg 的类型是以下三种基本数字类型之一:xs:floatxs:doublexs:decimal,则返回类型与 $arg 类型相同。

如果 $arg 的类型是从其中一个数值类型派生的,则返回类型是基数值类型。

如果 fn:floor、fn:ceiling 或 fn:round 函数的输入是 xdt:untypedAtomic,则它将隐式转换为 xs:double

任何其他类型都会生成静态错误。

示例

本主题提供了一些对 XML 实例的 XQuery 示例,这些实例存储在 AdventureWorks 数据库内不同的 xml 类型列中。有关这些列的概述,请参阅 AdventureWorks 数据库中的 xml 数据类型表示形式

A. 使用 ceiling() XQuery 函数

对于产品型号 7,此查询返回产品型号生产过程中的生产车间的列表。查询将返回每个生产车间的位置 ID、工时和批量大小(如果有记录)。查询使用 ceiling 函数以 decimal 类型值返回工时。

SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"; 
     for $i in /AWMI:root/AWMI:Location
     return 
       <Location LocationID="{ $i/@LocationID }" 
                   LaborHrs="{ ceiling($i/@LaborHours) }" >
                    { 
                      $i/@LotSize
                    }  
       </Location>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID=7

请注意上述查询的以下方面:

  • AWMI 命名空间前缀表示 Adventure Works 的生产说明。此前缀引用被查询文档中使用的同一命名空间。

  • Instructions 是一个 xml 类型列。因此,query() 方法(XML 数据类型)用于指定 XQuery。XQuery 语句指定为该查询方法的参数。

  • for ... return 是一个循环结构。在查询中,for 循环标识一列 <Location> 元素。对于每个生产车间,for 循环中的 return 语句都将描述要生成的 XML:

    • 带有 LocationID 和 LaborHrs 属性的 <Location> 元素。大括号 ({ }) 中对应的表达式从文档中检索所需的值。

    • { $i/@LotSize } 表达式从文档中检索 LotSize 属性(如果存在)。

    • 结果如下:

ProductModelID Result  
-------------- ------------------------------------------------------
7      <Location LocationID="10" LaborHrs="3" LotSize="100"/>
       <Location LocationID="20" LaborHrs="2" LotSize="1"/>   
       <Location LocationID="30" LaborHrs="1" LotSize="1"/>   
       <Location LocationID="45" LaborHrs="1" LotSize="20"/>
       <Location LocationID="60" LaborHrs="3" LotSize="1"/>   
       <Location LocationID="60" LaborHrs="4" LotSize="1"/>

实现限制

限制如下:

  • ceiling() 函数将所有整数值映射到 xs:decimal。