我需要在VARCHAR2
的列上查询数据库中的表。
我需要以块的形式检索记录,而不是一次性检索。 ROWNUM
用于此目的。
查询是这样的:
select * from SOMETABLE
where SOMECOLUMN > ?
and rownum <= 100
order by SOMECOLUMN
通过更改SOMECOLUMN
值重复运行此查询。首先,应该为此查询提供最小VARCAHAR2
值,以便获得前100条记录(尽管不是以任何特定顺序)。下次使用第100条记录中的SOMECOLUMN
值(为此目的将order by
添加到查询中),以便它获得接下来的100条记录,依此类推。
(假设:SOMECOLUMN
值是唯一的。)
提供给此查询的初始最小值是多少?
答案 0 :(得分:1)
您也可以将MIN()
或MAX()
用于VARCHAR2数据,而不仅仅是数字。你可以使用这个:
with t as
(select SOMETABLE.*, rownum as THE_ROW from SOMETABLE order by SOMECOLUMN)
select *
from t
where THE_ROW between 1 and 100 -- (-> between 101 and 200, between 201 and 300 ...)