DB2数值函数简介及使用
DB2数值函数简介及使用
学习一种数据库,最开始我们都是从其内部函数开始学习的,这些内部函
数对于我们编写SQL有很大的帮助;
数对于我们编写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 (cast(rand()*10 as int))
1
-----------
1
1 条记录已选择。
生成n-m的随机整数(m>n):
select n+cast(rand()*(m-n) as int) from sysibm.sysdummy1
db2 => select 5+cast(rand()*(10-5) as int) from sysibm.sysdummy1
1
-----------
9
1 条记录已选择。
db2 => select 5+cast(rand()*(10-5) as int) from sysibm.sysdummy1
1
-----------
7
1 条记录已选择。
通过rand() 函数和fetch frist 能随机取表中的行,从表中随机取n行数据
(在fetch first中n必须为大于等于1的整数,否则报错):
select * from tb order by rand()
fetch first n rows only
db2 => select b.* from (select row_number() over () ,a.empno,
a.salary from employee a) b order by rand() fetch first 5 rows only
a.salary from employee a) b order by rand() fetch first 5 rows only
1 EMPNO SALARY
-------------------- ------ -----------
19 000210 68270.00
20 000220 49840.00
11 000130 73800.00
30 000320 39950.00
12 000140 68420.00
5 条记录已选择。
db2 => select b.* from (select row_number() over () ,a.empno,
a.salary from employee a) b order by rand() fetch first 5 rows only
a.salary from employee a) b order by rand() fetch first 5 rows only
1 EMPNO SALARY
-------------------- ------ -----------
18 000200 57740.00
13 000150 55280.00
17 000190 50450.00
15 000170 44680.00
33 200010 46500.00
5 条记录已选择。
6、四舍五入:round (m,n)
参数:m表示一个数值数据,整数或者浮点数,正负数都可以,正负数进位都向其ceil()方向。
n表示进位的数目,整数表示处理小数点后面的数,负数表示处理整数部分的数,integer类型。
实例:
db2 => values (round(873.726,2),round(873.726,1),
上一个:DB2日期—时间—时间戳的运算
下一个:DB2序列简介及使用
- 更多DB2疑问解答:
- sql语句 从DB2移动到其他数据库
- DB2 character类型更新报错
- db2 怎么查看执行的sql语句需要多少系统临时表空间?
- db2数据库的table表里,一money字段中的数据显示为:56000,00 本人想要用sql语句将它修改为56,000,000
- DB2导出表结构,能不能只导出指定的表结构。求大神指教,给出命令哈
- DB2数据库,增加数据表空间容量需要重启数据库吗?
- cognos连接db2,为什么启动不了服务啊, 连接Oracle可以启动服务。。
- PostgreSQL对比DB2
- db2如何查看编写好的存储过程?
- db2数值截取
- 谁知道关于DB2怎么看系统日志,归档日志的位置。并且怎么修改日志呢?
- db2怎样重组表结构?
- 求一本【牛新庄的DB2运维教程】?
- db2 的 SECADM权限 是干什么的
- DB2怎么删除表空间所以数据