MS-SQL中有沒有取整的函數?

---MS-SQL中有沒有取整的函數

  1. --两个整数相除将截断小数部分

    select 3/4,4/3,5/3
    --结果 0,1,1

  2. --返回大于或等于所给数字表达式的最小整数

    SELECT CEILING(123.55), CEILING(123.45),CEILING(-123.45), CEILING(0.0)
    --结果 124,124,-123,0

  3. ---四舍五入 round(a,b) -- 结果a 精确到小数点右 b位,或是左 -b位

    select round(54.36,-2), round(54.36,-1),round(54.36,0), round(54.36,1),round(54.36,2)
    --结果 100.00,50.00,54.00,54.40,54.36

  4. ---四舍五入 并转化为 整数

    select cast(round(56.361,0) as int),cast(round(56.561,0) as int)
    --结果 56,57

---------------优美的分割线-----------august.cnblogs.com------------------------------------------

--举例使用
---CEILING()向上取整 --  FLOOR()向下取整-

---两个整数相除 舍弃小数部分( 全部都向前进位)  
declare @dividend decimal(20,2), @divisor decimal(20,2)

set @dividend=3
set @divisor=4
select CEILING(@dividend/@divisor)
--结果 1          -----0.75 变成了 1

set @dividend=4
set @divisor=3
select CEILING(@dividend/@divisor)
--结果 2         -----1.333 变成了 2

set @dividend=5
set @divisor=3
select CEILING(@dividend/@divisor)
--结果 2         -----1.666 变成了 2

-------------------------------------------------------

set @dividend=3
set @divisor=4
select FLOOR(@dividend/@divisor)
--结果 0          -----0.75 变成了 0

set @dividend=4
set @divisor=3
select FLOOR(@dividend/@divisor)
--结果 1         -----1.333 变成了 1

set @dividend=5
set @divisor=3
select FLOOR(@dividend/@divisor)
--结果 1         -----1.666 变成了 1

-------------------------------------------------------

---两个整数相除 四舍五入到整数
set @dividend=3
set @divisor=4
select cast(round(@dividend/@divisor,0) as int)
--结果 1        -----0.75 变成了 1

set @dividend=4
set @divisor=3
select cast(round(@dividend/@divisor,0) as int)
--结果 1         -----1.333 变成了 1

set @dividend=5
set @divisor=3
select cast(round(@dividend/@divisor,0) as int)
--结果 2          -----1.666 变成了 2

--一定要理解其中的差别
-------------------------------------------------------
大家感觉有用的话可以猛击右下方的“推荐”

另外:
在 MSSQL访问Oracle的数据库 链接用以下的语句
SELECT * FROM OPENQUERY(Enetdd, 'SELECT * FROM enetdd.ts_Area')

posted @ 2006-10-16 12:34  常大波  阅读(4137)  评论(1编辑  收藏  举报