您如何知道 IN 子句中包含的哪些项未找到



>我的 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数据类型,则可以对数据类型date OdciVarchar2List()集合使用或ODCIDateList()。您还可以自由创建自己的 SQL 类型集合。例如:

create or replace type T_Type_Name is table of number

相关内容

  • 没有找到相关文章

最新更新