DB2中如何取得随机数

转自:http://blog.csdn.net/jionghan3855/article/details/2246738

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

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

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

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

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

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

 

 

以下是我写的产生固定位数随机数的函数:

DB2中如何取得随机数
DB2中如何取得随机数
SET SCHEMA DB2INST1;
DB2中如何取得随机数
DB2中如何取得随机数
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","DB2INST1";
DB2中如何取得随机数
DB2中如何取得随机数
CREATE FUNCTION DB2INST1.F_RANDOM
DB2中如何取得随机数 ("IN_LENGTH" 
INTEGER
DB2中如何取得随机数 ) 
DB2中如何取得随机数  
RETURNS INTEGER
DB2中如何取得随机数  SPECIFIC DB2INST1.F_RANDOM
DB2中如何取得随机数  LANGUAGE SQL
DB2中如何取得随机数  
NOT DETERMINISTIC
DB2中如何取得随机数  READS SQL DATA
DB2中如何取得随机数  STATIC DISPATCH
DB2中如何取得随机数  CALLED 
ON NULL INPUT
DB2中如何取得随机数  EXTERNAL ACTION
DB2中如何取得随机数  INHERIT SPECIAL REGISTERS
DB2中如何取得随机数  
BEGIN atomic
DB2中如何取得随机数    
declare v_newLength INTEGER;
DB2中如何取得随机数    
declare v_random INTEGER;
DB2中如何取得随机数    
declare v_length INTEGER;
DB2中如何取得随机数    
declare v_index INTEGER;
DB2中如何取得随机数    
declare out_result VARCHAR(30);
DB2中如何取得随机数    
IF in_length > 30 THEN
DB2中如何取得随机数      
RETURN 0;
DB2中如何取得随机数    
END IF;
DB2中如何取得随机数    
DB2中如何取得随机数    
SET v_random = INTEGER(RAND()*POWER(10,in_length));
DB2中如何取得随机数    
SET v_length = in_length - LENGTH(RTRIM(CHAR(v_random)));
DB2中如何取得随机数    
SET v_index = 1;
DB2中如何取得随机数    
SET out_result = CHAR(v_random);
DB2中如何取得随机数    
WHILE v_index <= v_length DO
DB2中如何取得随机数      
SET out_result = CONCAT(8,out_result);--位数不够,前面补8
DB2中如何取得随机数      
SET v_index = v_index + 1;
DB2中如何取得随机数    
END WHILE;
DB2中如何取得随机数    
SET v_random = INTEGER(out_result);
DB2中如何取得随机数    
RETURN v_random;
DB2中如何取得随机数  
END;
DB2中如何取得随机数

 

调用自定义函数,产生8位的随机数,如下:

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

DB2中如何取得随机数

上一篇:MySQL索引背后的数据结构及算法原理--转


下一篇:linux基本命令(一)