Oracle:我可以从值列表中进行选择吗?

Bri*_*ino 0 sql oracle

我知道可以从列表中过滤查询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)

我知道我可以创建一个表并使用值填充它来执行此操作,但我正在寻找一种方法来直接在查询中执行它.

Ton*_*ews 6

您可以使用数据库"数字表"类型 - 创建一个或使用一个像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)