原文:http://blog.sina.com.cn/s/blog_a26966d90102wwkb.html

oracle中 rownum 与 connect by的结合使用

SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= N 可以生成1到N的整数序列,N是想要生成的序列的个数,可以是整数,也可以是查询得出的整数,例如:

 
SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= 7

 

1.  生成1000个随机数

SELECT ROWNUM RN,

DBMS_RANDOM.VALUE(0, 1000) RANDOM

FROM DUAL

CONNECT BY ROWNUM <= 1000;

注:DBMS_RANDOM.VALUE(A, B)是随机数产生函数, A是区间的开始,B是区间的结束

2.  例如:拆分以逗号隔开的 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;

注:REGEXP_SUBSTR是字符串截取正则表达式:A,B,C,D 是要截取的字符串;[^,]+ 是正则表达式匹配模式,匹配以非逗号的任意字符开始,以非逗号的任意字符结束的一段字符, 1 是从第一个字符开始, ROWNUM 是匹配的第 ROWNUM 字符串。

REGEXP_COUNT是数量查询正则表达式:A,B,C,D 是要截取的字符串;[,] 是正则表达式匹配模式,匹配以逗号, 1 是从第一个字符开始; REGEXP_COUNT + 1 就可以算出有多少个子字符串

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;

4.  列出两个日期之间所有的天

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

oracle中 rownum 与 connect by的结合使用的更多相关文章

  1. ORACLE 中ROWNUM用法总结(转)

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  2. oracle 中 rownum 和 row_number()

    简单的介绍下oracle 中rownum 和 row_number() 使用,实例演示. 参照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/49 ...

  3. oracle中rownum和rowid的区别

    rownum和rowid的区别总括: rownum和rowid都是伪列,但是两者的根本是不同的. rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownu ...

  4. ORACLE 中ROWNUM用法总结!

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  5. Oracle中rownum的基本用法

    Oracle中rownum的基本用法 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且r ...

  6. ORACLE 中ROWNUM

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  7. Oracle中rownum和rowid的理解

    rownum,rowid都叫伪列. 但是,rownum是逻辑上的编号,且其值总是从1开始,每行的rounum不是固定的.而rowid是“物理”编号.若数据库文件没有移动,则每行的 rowid一般是固定 ...

  8. oracle中rownum和rowid的区别【转】

    rownum和rowid的区别总括: rownum和rowid都是伪列,但是两者的根本是不同的. rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownu ...

  9. 转:ORACLE 中ROWNUM用法总结!

    oracle 分页查询语句:select * from (select u.*,rownum r from (select * from userifno) u where rownum<大值) ...

随机推荐

  1. error: No implicit Ordering defined for Any

    scala中经常遇到最头疼的问题,就是类型不匹配或者带Any,Option的提示错误信息. 最近碰到的是取最大值,但是明明已经Long类型的,却提示下面这个错误信息. 相关的源程序如下: // 获取o ...

  2. ngx_lua 随笔

    --[[ test --]] ngx.header.content_type = "text/plain"; --输出头部 local user = ngx.var.arg_use ...

  3. 《javascript征途》学习笔记

    基础 1. 只有函数有作用域 2. 如果在<script src>的src 中设置了src特性,则script元素包含的任意代码就无效了.应该分开放到不同的script块中. 3. 外部j ...

  4. ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点

    LinkedList接口(在代码的使用过程中和ArrayList没有什么区别) ArrayList底层是object数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点. 而在L ...

  5. php -- in_array函数

    in_array    检查数组中是否存在某个值 说明 bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE  ...

  6. TortoiseGit 提交代码每次需要输入用户名和密码?

    每次用TortoiseGit Pull或者Push的时候都会弹出让输入用户名.密码的框, 很麻烦 ,解决办法如下: 解决办法如下: Right click → TortoiseGit → Settin ...

  7. php 文件下载代码

    1.对于一般 $file = "/tmp/dummy.tar.gz"; header("Content-type: application/octet-stream&qu ...

  8. MyBitis(iBitis)系列随笔之一:MyBitis入门实例

        MyBits前身是iBitis,相对于Hibernate而言,它是半自动化ORM框架.本着分享和学习的目的,笔者将陆续把学习笔记与代码贴出,希望对想学习mybitis的同窗们有所帮助.     ...

  9. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  10. iOS -转载-根据字母排序

    1.从小到大自然排序NSDictionary *dic = @{", ", ", ", ", ", ", ", &quo ...