数值函数 - ceiling
适用范围:SQL Server
返回不带小数部分并且不小于其参数值的最小数字。 如果参数是一个空序列,则返回空序列。
语法
fn:ceiling ( $arg as numeric?) as numeric?
参数
$arg
将应用该函数的数字。
注解
如果$arg的类型是三个数值基类型之一,即 xs:float、xs:double 或 xs: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。