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即可。
真诚希望朋友们能留下宝贵意见,不甚感激!
分享到:
相关推荐
在Oracle数据库环境中,进行日期相关的查询是常见的需求之一。...同时,本文还介绍了几个Oracle SQL中处理日期的重要函数和技巧,希望对你有所帮助。在实际应用中,根据具体需求灵活运用这些技术可以大大提高工作效率。
首先,`INTERSECT`运算符用于找出两个或多个查询结果中的交集,即共同存在的数据。例如,如果我们想知道不同部门中有哪些工种是共有的,可以使用以下SQL语句: ```sql SELECT job FROM account INTERSECT SELECT ...
- Oracle的游标声明使用 `DECLARE cursor 游标名 is select语句`,支持直接在FOR循环中使用,简化了游标操作。 - SQL Server的游标声明是 `DECLARE 游标名 cursor for select 语句`,操作游标需要显式地OPEN、...
- `FULL JOIN`(或`FULL OUTER JOIN`):返回两个表中的所有行,如果某行在其中一个表中没有匹配,则用NULL填充。 4. **子查询** - 子查询可以嵌套在`SELECT`,`FROM`,`WHERE`或`HAVING`子句中,用于提供临时...
在Oracle数据库管理中,SQL(Structured Query Language)是不可或缺的语言工具,用于检索、更新和管理数据库。本资源“oracle常用经典sql查询”汇集了Oracle环境中的一些常见且实用的SQL查询语句,帮助用户提高...
在这个例子中,我们定义了一个新的过程`define_array`,它同样执行一个SQL查询(`SELECT * FROM demo WHERE rownum ),但这次使用了`define_array`来定义两个数组`n_tab`和`n_tab1`,分别用于存储查询结果的第一列...
2. 子查询:Oracle SQL允许使用子查询来嵌套查询,可以在FROM、WHERE、SELECT和HAVING子句中使用。子查询可以作为独立的查询返回结果集,也可以与其他操作结合使用,如比较、联接等。 3. 联接操作:除了标准的INNER...
例如,可以创建一个JavaScript步骤,计算总页数,并在Job中使用"Start"和"Jump to step"步骤来控制循环。每次循环结束时,更新查询的页码,然后再次调用"Table Input"步骤获取下一批数据。 3. **数据写入**:处理后...
然而,使用`LIKE`可能会导致全表扫描,因此应该尽量避免在大型表中使用它,或者确保模式的开头不是通配符。 ##### 分析函数 分析函数(Analytic Functions)是一类特殊的函数,可以在一组行上进行计算,而不仅仅是...
选项D中的查询语句试图在WHERE子句中使用聚合函数MAX(),这是不正确的用法。聚合函数不能直接用于WHERE子句中,而应该放在HAVING子句中。因此,选项D是错误的。 ### 4. Oracle伪列的应用 #### 4.1 伪列概述 - **...
在IT领域,SQL...在实践中不断探索和提升,将有助于你在工作中更有效地处理数据问题,同时也能在面试中展现出扎实的SQL功底。记得理论与实践相结合,多做实验,多思考,这样可以更好地理解和掌握这些知识点。
EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。 自定义角色 Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户 创建角色 SQL> create role admin; 授权给...
在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行分页更加灵活且易于维护。 #### 二、存储过程分页的优势 1. **提高性能**:存储过程...
这需要使用DECLARE语句声明变量,ACCEPT命令获取用户输入,然后在PL/SQL块中查询dept表。 3. 利用%type属性,接受雇员号并显示整体薪水。%type属性用于声明变量,使其与表列具有相同的类型,从而简化代码。 4. ...
以下两个SQL查询对比了性能差异: ```sql SELECT names, dates FROM test, b WHERE test.names = b.names (+) AND b.names IS NULL AND b.dates > DATE('2003-01-01', 'yyyy-mm-dd'); SELECT names, dates FROM ...
在Oracle中,分页一般会使用ROWNUM伪列,它是一个序列,用来表示从数据文件或缓冲区中读取数据的顺序。但是ROWNUM有一个重要的特性,即不能直接用于大于或等于的条件,因此实现分页的正确方式通常采用嵌套查询。比如...
- 关联查询是将两个或多个表中的数据结合在一起的过程,常用的操作有内连接、左连接、右连接等。 #### 九、查询、集合和子查询 - **9.1 Oracle的几个概念** - 包括视图、索引、存储过程等高级主题。 - **9.2 ...