`
yadsun
  • 浏览: 181347 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

列出两个日期间的所有日期(使用oracle的rownum实现在sql中使用循环)

    博客分类:
  • SQL
阅读更多
oracle中有一个字段rownum,长期以来只知道它是记录的行号,却没有想过用它做更有价值的事情。
有两个时间点,要求列出这两天之间的所有日期,如2010-04-01和2010-04-10,列出
        2010-4-1
        2010-4-2
        2010-4-3
        2010-4-4
        2010-4-5
        2010-4-6
        2010-4-7
        2010-4-8
        2010-4-9

首先想到的是用环循,可是又不能用存储过程,在sql中怎么用循环?rownum帮了大忙了
	    SELECT ROWNUM AS FOR_I 
	    FROM ALL_OBJECTS 
	    WHERE ROWNUM < 10;
	


结果如下:
        FOR_I
        1
        2
        3
        4
        5
        6
        7
        8
        9

正是利用rownum自增1的特性可以实现sql中的循环。
下面实现本文刚开始提的需求,列出两个日期间的所有日期:
	    SELECT TRUNC(TO_DATE('2010-04-01', 'yyyy-mm-dd')) + ROWNUM - 1 AS DATES
	    FROM   ALL_OBJECTS
	    WHERE  TRUNC(TO_DATE('2010-04-01', 'yyyy-mm-dd')) + ROWNUM - 1 <
	           TRUNC(TO_DATE('2010-04-10', 'yyyy-mm-dd'));
	


结果如下:
        DATES
        2010-4-1
        2010-4-2
        2010-4-3
        2010-4-4
        2010-4-5
        2010-4-6
        2010-4-7
        2010-4-8
        2010-4-9

这里从all_objects中查rownum是因为all_objects有足够多的记录并且是系统表不常会被清空,当然数据过多会影响一定的查询速度,如果循环次数不是很多建议选择记录不是很多的表,有助于提高效率。
    如果想改变步长rownum * 2即可。


   
   
皇冠信誉◆清风通讯-黑莓体验中心-BLACKBERRY全面支持货到付款

   
真诚希望朋友们能留下宝贵意见,不甚感激!

1
0
分享到:
评论
1 楼 java_MagicWang 2012-03-30  
非常感谢,可以用

相关推荐

    Oracle sql查询当前月的所有日期

    在Oracle数据库环境中,进行日期相关的查询是常见的需求之一。...同时,本文还介绍了几个Oracle SQL中处理日期的重要函数和技巧,希望对你有所帮助。在实际应用中,根据具体需求灵活运用这些技术可以大大提高工作效率。

    Oracle中实现MySql中limit+SqlServer分页+分页的存储过程

    首先,`INTERSECT`运算符用于找出两个或多个查询结果中的交集,即共同存在的数据。例如,如果我们想知道不同部门中有哪些工种是共有的,可以使用以下SQL语句: ```sql SELECT job FROM account INTERSECT SELECT ...

    oracle与SQL server的语法差异总结

    - Oracle的游标声明使用 `DECLARE cursor 游标名 is select语句`,支持直接在FOR循环中使用,简化了游标操作。 - SQL Server的游标声明是 `DECLARE 游标名 cursor for select 语句`,操作游标需要显式地OPEN、...

    oracle sql实例

    - `FULL JOIN`(或`FULL OUTER JOIN`):返回两个表中的所有行,如果某行在其中一个表中没有匹配,则用NULL填充。 4. **子查询** - 子查询可以嵌套在`SELECT`,`FROM`,`WHERE`或`HAVING`子句中,用于提供临时...

    oracle常用经典sql查询

    在Oracle数据库管理中,SQL(Structured Query Language)是不可或缺的语言工具,用于检索、更新和管理数据库。本资源“oracle常用经典sql查询”汇集了Oracle环境中的一些常见且实用的SQL查询语句,帮助用户提高...

    DBMS_SQL的使用

    在这个例子中,我们定义了一个新的过程`define_array`,它同样执行一个SQL查询(`SELECT * FROM demo WHERE rownum ),但这次使用了`define_array`来定义两个数组`n_tab`和`n_tab1`,分别用于存储查询结果的第一列...

    oracle高级sql

    2. 子查询:Oracle SQL允许使用子查询来嵌套查询,可以在FROM、WHERE、SELECT和HAVING子句中使用。子查询可以作为独立的查询返回结果集,也可以与其他操作结合使用,如比较、联接等。 3. 联接操作:除了标准的INNER...

    kettle另一种简单的循环方式

    例如,可以创建一个JavaScript步骤,计算总页数,并在Job中使用"Start"和"Jump to step"步骤来控制循环。每次循环结束时,更新查询的页码,然后再次调用"Table Input"步骤获取下一批数据。 3. **数据写入**:处理后...

    SQL最佳实践

    然而,使用`LIKE`可能会导致全表扫描,因此应该尽量避免在大型表中使用它,或者确保模式的开头不是通配符。 ##### 分析函数 分析函数(Analytic Functions)是一类特殊的函数,可以在一组行上进行计算,而不仅仅是...

    Oracle考试题.docx

    选项D中的查询语句试图在WHERE子句中使用聚合函数MAX(),这是不正确的用法。聚合函数不能直接用于WHERE子句中,而应该放在HAVING子句中。因此,选项D是错误的。 ### 4. Oracle伪列的应用 #### 4.1 伪列概述 - **...

    sql自学通,sql练习经典题目

    在IT领域,SQL...在实践中不断探索和提升,将有助于你在工作中更有效地处理数据问题,同时也能在面试中展现出扎实的SQL功底。记得理论与实践相结合,多做实验,多思考,这样可以更好地理解和掌握这些知识点。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。  自定义角色 Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户  创建角色 SQL&gt; create role admin;  授权给...

    Oracle存储过程分页

    在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行分页更加灵活且易于维护。 #### 二、存储过程分页的优势 1. **提高性能**:存储过程...

    Oracle作业题[文].pdf

    这需要使用DECLARE语句声明变量,ACCEPT命令获取用户输入,然后在PL/SQL块中查询dept表。 3. 利用%type属性,接受雇员号并显示整体薪水。%type属性用于声明变量,使其与表列具有相同的类型,从而简化代码。 4. ...

    ORACLE的基本语法集锦

    以下两个SQL查询对比了性能差异: ```sql SELECT names, dates FROM test, b WHERE test.names = b.names (+) AND b.names IS NULL AND b.dates &gt; DATE('2003-01-01', 'yyyy-mm-dd'); SELECT names, dates FROM ...

    第四章 约束序列分页语句两表联查.pdf

    在Oracle中,分页一般会使用ROWNUM伪列,它是一个序列,用来表示从数据文件或缓冲区中读取数据的顺序。但是ROWNUM有一个重要的特性,即不能直接用于大于或等于的条件,因此实现分页的正确方式通常采用嵌套查询。比如...

    Oracle讲义案例

    - 关联查询是将两个或多个表中的数据结合在一起的过程,常用的操作有内连接、左连接、右连接等。 #### 九、查询、集合和子查询 - **9.1 Oracle的几个概念** - 包括视图、索引、存储过程等高级主题。 - **9.2 ...

Global site tag (gtag.js) - Google Analytics