数值函数 - ceiling

适用范围:SQL Server

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

语法

  
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

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

示例

本主题针对存储在 AdventureWorks 数据库中各种 xml 类型列中的 XML 实例提供 XQuery 示例。

A. 使用 ceiling() XQuery 函数

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

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 的生产说明。 此前缀引用被查询文档中使用的同一命名空间。

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

  • 为。。。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。

另请参阅

floor 函数 (XQuery)
round 函数 (XQuery)