我知道可以从列表中过滤查询Select * from table where ID in (1,2,3,4),但是可以从列表中进行选择吗?
例如,我想从偏移小时列表中选择日期和偏移日期:
select sysdate, sysdate - offset / 24 as offsetSysdate
from dual, (1,2,3,4) as offset
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建一个表并使用值填充它来执行此操作,但我正在寻找一种方法来直接在查询中执行它.
您可以使用数据库"数字表"类型 - 创建一个或使用一个像SYS.KU $ _OBJNUMSET一样轻松存在的数据库:
select sysdate, sysdate - offset.column_value / 24 as offsetSysdate
from TABLE (KU$_OBJNUMSET(1,2,3,4)) offset
Run Code Online (Sandbox Code Playgroud)
请注意,上面offset现在是TABLE的别名,并且有一个column_value像这样的表类型调用的伪列.也不需要DUAL表.
如果您更喜欢创建自己的类型:
create type num_tab as table of number;
/
select sysdate, sysdate - offset.column_value / 24 as offsetSysdate
from TABLE(num_tab(1,2,3,4)) offset;
Run Code Online (Sandbox Code Playgroud)