转自: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. MFC HTML的img显示摄像头图像

    cv::VideoCapture vc; vc.open(0); cv::Mat temp; vc.read(temp); //cv::resize(temp,temp,cv::Size(320,24 ...

  2. 基于Spring Boot和Spring Cloud实现微服务架构学习--转

    原文地址:http://blog.csdn.net/enweitech/article/details/52582918 看了几周spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习 ...

  3. JAVA中split对空串的影响。

    public class SplitEmptyString { /** * @param args */ public static void main(String[] args) { // 空串的 ...

  4. jquery翻页

    http://js.itivy.com/simplePagination.js/index.html#page-10 http://www.oschina.net/news/41941/7-html5 ...

  5. 从业者生存质量报告之,教育行业里的IT男

    当教育遇上互联网,非常多传统教育机构都卡在了技术这道门槛上. 一位教育机构创始人曾这样感叹说:"技术须要文化基因.氛围.教育行业不知道技术这帮兄弟须要什么样的文化,什么样的工作氛围,怎么管理 ...

  6. 从头学习MVC4基础之视图

    实例一:首先简单显示实例: 控制器代码: public class WujyTestController : Controller { public ActionResult Index() { Li ...

  7. ant design pro (九)引入外部模块

    一.概述 原文地址:https://pro.ant.design/docs/import-cn 除了 antd 组件以及脚手架内置的业务组件,有时我们还需要引入其他外部模块,这里以引入富文本组件 re ...

  8. 移动端项目中 @2x 图 和 @3x 图 的使用

    移动端开发过程中,因为手机的dpr(设备像素比不同),我们需要根据dpr来修改图标的大小: 1.通过mixin,动态修改图标的背景图片.通过@media (媒体查询),判断设备的dpr. @mixin ...

  9. Guava ---- Ordering排序工具

    使用Guava的排序工具类, 高速实现对象的单变量排序和多变量排序, 让你的开发效率爆炸... import com.google.common.collect.Lists; import com.g ...

  10. javascript&jquery 判断滚动到页面底部

      js 判断滚动到页面底部 CreateTime--2018年4月14日10:13:07 Author:Marydon 1.使用场景: 滚动到屏幕底部,触发加载分页数据请求(qq空间,手机端) 2. ...