我的 IN 子句中有一个包含 10 个项目的列表,在我的 SELECT 中只找到了 8 个项目。你怎么知道 IN 子句中包含的哪些项目没有找到?
SELECT * FROM SOME_TABLE WHERE ID IN (1,2,3,4,5,6,7,8,9,10)
我的桌子是:
**身份证名称** ------------------ 1 乔奥
2何塞
3威廉
4 玛丽亚
5卡洛斯
6 本杰明
7丹尼尔
9
维拉 11 乔金
如果您需要知道IN
子句中列出的哪些项目在表中没有找到匹配项,您可以利用用户定义的或内置的集合——嵌套表或变量数组。下面的例子使用了数字数据类型的内置集合sys.odcinumberlist()
元素:
/*sample of data */
with t1(col) as(
select level
from dual
connect by level <= 11
)
select s.column_value as missing_val
from t1 /* here you list the elements as you would using IN clause*/
right join table(sys.odcinumberlist(1,2,3,4,5,6,7,8,9,10, 70)) s
on (t1.col = s.column_value)
where t1.col is null
结果:
MISSING_VAL
------------
70
如果列表中的元素属于varchar
数据类型,则该OdciVarchar2List()
集合可用于或ODCIDateList()
用于数据类型的元素date
。您还可以自由创建自己的 SQL 类型集合。例如:
create or replace type T_Type_Name is table of number