db2 随机数函数_在DB2数据库自定义产生指定位数的随机数函数

DB2产生随机数的函数:RAND()

例:SELECT INT(RAND()*100) FROM  SYSIBM.SYSDUMMY1; --产生0-100之间的随机数。

注:RAND()返回的为0-1之间的任意浮点数,所以需要使用INT将浮点数转换为整数,去掉小数位。

如果生成固定位数的随机数,需要自己写函数实现。

在 ORACLE中,提供了补位的方法供调用(lpad()),但在DB2中没有相应的函数。

SET SCHEMA DB2INST1;

SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","DB2INST1";

CREATE FUNCTION DB2INST1.F_RANDOM

("IN_LENGTH" INTEGER

)

RETURNS INTEGER

SPECIFIC DB2INST1.F_RANDOM

LANGUAGE SQL

NOT DETERMINISTIC

READS SQL DATA

STATIC DISPATCH

CALLED ON NULL INPUT

EXTERNAL ACTION

INHERIT SPECIAL REGISTERS

BEGIN atomic

declare v_newLength INTEGER;

declare v_random INTEGER;

declare v_length INTEGER;

declare v_index INTEGER;

declare out_result VARCHAR(30);

IF in_length > 30 THEN

RETURN 0;

END IF;

SET v_random = INTEGER(RAND()*POWER(10,in_length));

SET v_length = in_length - LENGTH(RTRIM(CHAR(v_random)));

SET v_index = 1;

SET out_result = CHAR(v_random);

WHILE v_index <= v_length DO

SET out_result = CONCAT('8',out_result);--位数不够,前面补8

SET v_index = v_index + 1;

END WHILE;

SET v_random = INTEGER(out_result);

RETURN v_random;

END;

SELECT F_RANDOM(8) FROM  SYSIBM.SYSDUMMY1;--产生8位的随机数。

分享到:

2011-02-08 19:42

浏览 2472

分类:非技术

评论

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值