zoukankan      html  css  js  c++  java
  • Oracle——connect by (Level/Rownum) 的一些用法

    1.字符串‘A,B,C,D’ , 根据‘,’转列。

     SELECT REGEXP_SUBSTR('A,B,C,D',  '[^,]+',   1,   ROWNUM)
       FROM DUAL 
    CONNECT BY ROWNUM <= REGEXP_COUNT('A,B,C,D',  '[,]',  1) + 1;

     2.生成10个随机数

    SELECT ROWNUM RN, ROUND(DBMS_RANDOM.VALUE(0, 1000),2) RANDOM
      FROM DUAL
    CONNECT BY ROWNUM <= 1000;

     扩展:DBMS_RANDOM是Oracle提供的一个PL/SQL包,用于生成随机数据和字符。它具有以下函数。

           其中,initialize,random,terminate函数在Oracle11g中已不推荐使用,主要用于向后兼容。

    • INITIALIZE : 初始化DBMS_RANDOM值,使在不同的会话中,不同的用户下,随机生成的值一样。
    • NORMAL :函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
    • RANDOM:返回值的范围为: [-2^31, 2^31),返回的是整数。语法:DBMS_RANDOM.RANDOM('范围起','范围止'),不带参数返回整数。
    • SEED: 功能和INITIALIZE函数类似,实际上,INITIALIZE函数被淘汰,推荐的替代函数即是SEED函数。与INITIALIZE函数不同的是SEED函数同时支持数值和字符作为种子值,而INITIALIZE函数只支持数值。
    • STRING:随机生成字符串  语法:DBMS_RANDOM.STRING('字符串格式','字符串长度')

    3.列出两个月份之间所有的月份/两个星期之间所有的天

    SELECT TO_CHAR(ADD_MONTHS(DATE '2009-03-01', ROWNUM - 1), 'YYYY-MM') MONTHS
      FROM DUAL
    CONNECT BY ROWNUM <= MONTHS_BETWEEN(DATE '2010-03-01', DATE '2009-03-01') + 1;
    
    SELECT TO_CHAR(DATE'2009-05-11' + ROWNUM - 1, 'YYYY-MM-DD') AS DAYS
    FROM DUAL
    CONNECT BY ROWNUM <= DATE'2009-05-23' - DATE'2009-05-11' + 1

     

     

    自强不息,厚德载物
  • 相关阅读:
    webpack3-loader和plugin的概念理解
    即将发布的ionic4有哪些激动人心的新特性
    使用腾讯tslint-config-alloy轻松搞定ionic项目中TSLint配置
    ionic2+ 中强制使安卓用ios样式的方法
    最新动态: 开源项目 ionic3-awesome — 实现fullScreenVideo
    c#开发windows 服务
    搭建NHibernate3.2+CodeFirst映射框架
    WCF
    MVC全局异常处理
    两只技术小白把初创电商卖了百万美元,现在他们决定把秘诀告诉你
  • 原文地址:https://www.cnblogs.com/zhoufei2514/p/13366152.html
Copyright © 2011-2022 走看看