zoukankan      html  css  js  c++  java
  • 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中没有相应的函数。

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


    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;

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

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

  • 相关阅读:
    SpringBook+Lombok 使用教程
    SpringBoot + Swagger Demo
    SpringBoot+Mybatis_Plus Generator
    Ubuntu下创建apt源
    Mysql优化建议
    Zabbix批量添加Hosts
    批量安装Zabbix_Agent
    CentOS7安装Zabbix
    安卓开发中的各种进度条样式
    多点触控之MotionEvent.ACTION_MASK作用
  • 原文地址:https://www.cnblogs.com/wangpei/p/3552790.html
Copyright © 2011-2022 走看看