转自: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. hdu 1398

    题目大意:输入是一个整数.输出他的拆分数(即拆分的方案数),本题与1028最大的不同之处就在于他的面额只能是整数的平方 代码如下: /* * 1398_1.cpp * * Created on: 20 ...

  2. Python学习(三)流程控制

    Python流程控制 本章介绍 python 的基础流程控制.包括 if 条件语句.for 循环 和 while 循环语句: continue 及 break 的用法等. 基本用法与 C 和 Java ...

  3. wamp网站Forbidden You don't have permission to access

    Forbidden You don't have permission to access   问题原因:apache的2.4的版本中 Require all denied 应该变成Require a ...

  4. IIS7的CMD指令

    AppCmd.exe工具所在目录 C:\windows\sytstem32\inetsrv\目录下 使用命令行管理IIS 7.0时,需要使用IIS7.0提供的全新管理工具AppCmd.exe.AppC ...

  5. VS2010 OpenCL运行环境配置

    1.安装AMD GPU显卡驱动(安装后重启) 13-12_win7_win8_64_dd_ccc_whql.exe 2.安装AMD OpenCL SDK(安装后重启) AMD-APP-SDK-v2.9 ...

  6. unity 的reflection probe和environmentmap

    unity做了个很恶心的事情 unity_SpecCube0这里如果在reflectionprobe范围内就传reflectionprobe 如果在probe范围外这里就传environmap 在GI ...

  7. android:Layout_weight的深刻理解

    最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出 ...

  8. phpstorm failed to create jvm:error code -6 解决办法 解决方法

    phpStorm 软件打开运行提示 failed to create JVM的解决办法. 修改文件 D:\Program Files (x86)\JetBrains\PhpStorm 7.1.3\bi ...

  9. Android:Volley源代码解析

    简单实例 Volley是一个封装HttpUrlConnection和HttpClient的网络通信框架,集AsyncHttpClient和Universal-Image-Loader的长处于了一身.既 ...

  10. Microjs: 超棒的迷你框架和迷你类库搜罗工具

    你可以按条件方便的搜索需要的类库或者框架,以下为条件 基础框架 模板引擎 DOM操作 CSS动画 Javascript动画 数据操作 更多 阅读原文:Microjs: 超棒的迷你框架和迷你类库搜罗工具