Как узнать, какие элементы, содержащиеся в предложении IN, не были найдены?
У меня есть список с 10 пунктами в моем предложении IN, в моем SELECT было найдено только 8 элементов. как узнать, какие элементы, содержащиеся в предложении IN, не были найдены?
SELECT * FROM SOME_TABLE WHERE ID IN (1,2,3,4,5,6,7,8,9,10)
Мой стол:
** ID NAME ** ------------------ 1 JOAO
2 ХОЗЕ
3 УИЛЬЯМ
4 МАРИЯ
5 CARLOS
6 бенджамин
7 Даниель
9 Вера
11 Хоаким
1 ответ
Если вам нужно знать, какие предметы перечислены в 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