转自: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位的随机数。

DB2中如何取得随机数的更多相关文章

  1. DB2中错误信息说明

    DB2错误信息SQLCODE SQLSTATE (按sqlcode排序) .分类: db2数据库 2012-10-19 11:35 2942人阅读 评论(0) 收藏 举报 db2sql存储table数 ...

  2. DB2中字符、数字和日期类型之间的转换

    DB2中字符.数字和日期类型之间的转换 一般我们在使用DB2或Oracle的过程中,经常会在数字<->字符<->日期三种类 型之间做转换,那么在DB2和Oracle中,他们分别 ...

  3. 在db2中 两个数据库之间的两个表的联合查询

    大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询 我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理我找了类似于比如两个数据库: db1,db2用户名密码s ...

  4. DB2中循环日期跑数据

    1.数据库版本: 2.具体实现方式: ),)) /*************************************************************************** ...

  5. DB2中的系统表SYSIBM.SYSDUMMY1

    ORACLE中有一张系统数据库表DUAL用来访问系统的相关信息 SELECT SYSDATE FROM DUAL;  --返回当前系统日期 ------------------------------ ...

  6. DB2 中日期 比较

    在DB2中的Date 一共识别三种格式,最常见的是这样 '2013-12-12' 对,你没看错,DB2认为这样的字符串就是Date数据 然后我们可以利用函数这样寻找日期区间 select * from ...

  7. JS中实现种子随机数

    参数: 详谈JS中实现种子随机数及作用 我在Egret里这么写... class NumberTool{ /**种子(任意默认值5)*/ public static seed:number = 5; ...

  8. 从Linux内核中获取真随机数【转】

    转自:http://www.cnblogs.com/bigship/archive/2010/04/04/1704228.html 内核随机数产生器 Linux内核实现了一个随机数产生器,从理论上说这 ...

  9. DB2中的数据类型

    DB2中的数据类型DB2内置数据类型可以分成数值型(numeric).字符串型(character string).图形字符串(graphic string).二进制字符串型(binary strin ...

随机推荐

  1. Xcode 安装插件管理器

    https://github.com/alcatraz/Alcatraz运行之后, load bundle, 然后window就有pakagegemanage. 下载如下插件: 自动导入插件

  2. Linux进程间通信—信号量

    二.信号量(semophore) 信号量是一种计数器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常实现为一种锁机制.实质上,信号量是一个被保护的变量,并且只能通过初始化和两个标准的原子操作 ...

  3. mysql数据库维护(备份和还原)和性能提高

    为了有效防止数据丢失,并将损失降到最低,应对数据库服务器做维护.数据库维护,包括数据备份,还原,导出和导入操作. 1. MySQL数据库备份 所谓数据库维护,主要包含备份数据,还原数据和数据库迁移,对 ...

  4. MapReduce实战--倒排索引

    本文地址:http://www.cnblogs.com/archimedes/p/mapreduce-inverted-index.html,转载请注明源地址. 1.倒排索引简介 倒排索引(Inver ...

  5. Vue.js前后端同构方案之准备篇——代码优化

    收录待用,修改转载已取得腾讯云授权 导语 目前Vue.js的火爆不亚于当初的React,本人对写代码有洁癖,代码也是艺术.此篇是准备篇,工欲善其事,必先利其器.我们先在代码层面进行优化,对我们完成整个 ...

  6. Nodejs 天涯帖子《鹿鼎记中计》 柳成萌著 下载爬虫

    功能:从天涯帖子中下载楼主发言到一个文本文件中 实验对象:http://bbs.tianya.cn/post-no05-308123-1.shtml  <鹿鼎记中计> 柳成萌著 爬取效果: ...

  7. C++ 之 基础回顾(一)

    1  exe 程序

  8. Mysqldump参数大全(参数来源于mysql5.5.19源码)

    参数 参数说明 --all-databases  , -A 导出全部数据库. mysqldump  -uroot -p --all-databases --all-tablespaces  , -Y ...

  9. 算法笔记_045:币值最大化问题(Java)

    目录 1 问题描述 2 解决方案 2.1 动态规划法   1 问题描述 给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同.请问如何选择硬币,使得在其原始位置互不相邻 ...

  10. GridLayout with span

    Widgets can span multiple columns or rows in a grid. In the next example we illustrate this. #!/usr/ ...