我想提供一个虚拟列的ID列表。这将帮助我确定那些不在表格中的ID。 例子:我想生成下面的硬编码数据集“与”条款列表中的虚拟值作为虚拟列
ID
12345
23456
34567
这是可能在Oracle中?
我想提供一个虚拟列的ID列表。这将帮助我确定那些不在表格中的ID。 例子:我想生成下面的硬编码数据集“与”条款列表中的虚拟值作为虚拟列
ID
12345
23456
34567
这是可能在Oracle中?
这是做你想做的吗?
with ids as (
select 12345 as id from dual union all
select 23456 from dual union all
select 34567 from dual
)
select ids.*
from ids;
还有其他方法来表达这一点。然而,简单的union all
是简短列表的最简单方法。
你可以使用一个集合;如果您有少于32K项built-in ODCINumberList
会做:
select * from table(sys.odcinumberlist(12345, 23456, 34567));
COLUMN_VALUE
------------
12345
23456
34567
或者作为CTE如果你喜欢:
with cte (id) as (
select * from table(sys.odcinumberlist(12345, 23456, 34567))
)
select * from cte;
ID
----------
12345
23456
34567
它比维护大量的union all
报表更容易一些,只要你只需要一个维度。它也可以作为集合从应用程序层传递到查询或过程 - 例如,可以将Java数组转换为通过JDBC传递的集合。
但是,如果你有很多值,这些值不是在运行时由某种外部机制提供的,那么它们应该可能在某个表中。
我有一个相当大的名单。您能否提供一个替代方案,以便我可以对值列表进行硬编码? – user1124702