在
DB2
数据库自定义产生指定位数的随机数函数。
DB2
产生随机数的函数:
RAND()
例
:SELECT
INT(RAND()*100)
FROM
SYSIBM.SYSDUMMY1;
--
产生
0-100
之间的随机
数。
注:
RAND()
返回的为
0-1
之间的任意浮点数,所以需要使用
INT
将浮点数转换为整数,去
掉小数位。
如果生成固定位数的随机数,需要自己写函数实现。
在
ORACLE
中,提供了补位的方法供调用(
lpad()
)
,但在
DB2
中没有相应的函数。
以下是我写的产生固定位数随机数的函数:
SET SCHEMA DB2INST1;
SET CURRENT PA
TH = "SYSIBM","SYSFUN","SYSPROC","DB2INST1";
CREATE FUNCTION DB2INST1.F_RANDOM
("IN_LENGTH" INTEGER
)
RETURNS INTEGER
SPECIFIC DB2INST1.F_RANDOM
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DA
TA
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 V
ARCHAR(30);
IF in_length > 30 THEN
RETURN 0;
END IF;
SET v_random = INTEGER(RAND()*POWER(10,in_length));