dki*_*lev 3 sql oracle postgresql unnest
我有带有子网的表
cidr | ip
Run Code Online (Sandbox Code Playgroud)
我想通过所属IP列表选择子网。在postgres中,我可以这样进行:
select
ips.ip, net.uid, net.cidr
from
TBL_SID_SUBNETWORK net,
(select unnest(ARRAY[1,2,3]) ip) ips
where
cast (((2^net.cidr) - 1) as bigint)<<(32 - net.cidr) & ips.ip = net.ipaddress
Run Code Online (Sandbox Code Playgroud)
在postgres中,我可以传递数组并将其用作表。
select ips.ip from
(select unnest(ARRAY[1,2,3]) ip) ips
|ip|
1
2
3
Run Code Online (Sandbox Code Playgroud)
可以在Oracle中做类似的事情吗?在一个查询中?我不想创建,填充和删除其他表,因为我间接使用DB,并且事务由应用程序配置管理。
我知道Oracle的TABLE(collection)功能与我想要的功能完全相同。但是我无法将集合传递到该查询中,因为我应该在之前声明并填充集合,因此,这与创建临时表相同。
Oracle具有可以使用的预定义的,成文档的集合。例如:
select column_value ip from table(sys.odcinumberlist(1,2,3));
Run Code Online (Sandbox Code Playgroud)
没有一个地方可以列出所有记录在案的藏品。 此页面的的数据库数据磁带盒开发人员指南列出了一些比较流行的,如ODCIVarchar2List,ODCINumberList和ODCIDateList。同样,Lukas Eder的答案使用查询来查找系统集合,尽管并非所有文件都已记录在案。
如果Oracle仅提供几个标准集合供大家使用,并给它们取好名字,那就太好了。使用sys.odcinumberlist起来很安全,但是看起来很丑陋。
| 归档时间: |
|
| 查看次数: |
2658 次 |
| 最近记录: |