日期:2014-05-16  浏览次数:20661 次

DB2数值函数简介及使用

学习一种数据库,最开始我们都是从其内部函数开始学习的,这些内部函数对于我们编写SQL有很大的帮助;

本文虽然介绍的不全,但能够起到一个引导作用,具体信息以官网为准。

1、取绝对值的函数:abs、absval
参数个数:1
参数类型:smallint,integer,bigint数据类型;也可以为null,此时返回值也为null。
db2 => select abs(-123),abs(null),abs('-100') from sysibm.sysdummy1
1           2                                          3
----------- ------------------------------------------ ------------------------------------------
        123                                          -                                        100
  1 条记录已选择。


db2 => select abs(NaN)||' '||abs(sNaN)||' '||abs(Infinity) from sysibm.sysdummy1
1
----------------------
NAN SNAN INFINITY
  1 条记录已选择。


2、向上取整:ceil、ceiling
db2 => select ceil(123.89),ceiling(123.49) from sysibm.sysdummy1
1       2
------- -------
   124.    124.
  1 条记录已选择。


如果ceil函数的参数为一个数值组成的字符串,如'123.45',
此函数能够将其转换为一个浮点数,在进行取整操作。
db2 => select ceil(123.45),ceil('123.45') from sysibm.sysdummy1
1       2
------- ------------------------------------------
   124.                                        124
  1 条记录已选择。


3、向下取整数:floor
参数个数:1
参数类型:整数和浮点数,也可以是null,此时返回值为null。
db2 => select floor(123.56),floor(100),floor(-123.99) from sysibm.sysdummy1
1       2           3
------- ----------- -------
   123.         100   -124.
  1 条记录已选择。


db2 => select floor(null) from sysibm.sysdummy1
1
------------------------------------------
                                         -
  1 条记录已选择。


4、求M的n次幂:power(M,n)
返回值:
integer:若两个参数都为integer或者smallint
bigint:若一个为bigint类型,另一个为bigint、integer或者smallint。
double:若两个参数都为浮点数的话。

db2 => select power(3.2,2.1),power(3,2),power(3,0) from sysibm.sysdummy1
1                        2           3
------------------------ ----------- -----------
  +1.15031015682351E+001           9           1
  1 条记录已选择。


5、随机数:rand(m)函数
返回值:返回一个0和1之间的浮点数;若参数为null,结果也为null。
参数:类型为smallint或integer的数,范围在0-2147483647之间的数,称为种子。

db2 => select rand(),rand(500),rand(null) from sysibm.sysdummy1
1                        2                        3
------------------------ ------------------------ ------------------------
  +2.43232520523698E-001   +5.09964293343913E-002                        -
  1 条记录已选择。

生成0-1的随机数:
select rand() from sysibm.sysdummy1

生成0-n的随机整数:
select cast(rand()*n as int) from sysibm.sysdummy1
db2 => values (cast(rand()*10 as int))
1
-----------
          5
  1 条记录已选择。

db2 => values (c