Я использовал SQL запрос, подобный следующему:
select * from FOO_TABLE ft where ft.foo_field != any ('A','B','C');
Я думал, что результатом будут все записи, где поле foo_field не содержит 'A', 'B' или 'C' ( exclusive ), но в результате я получил все записи, в том числе записи с полем foo_field равным 'A' или 'B' или 'C'.
Чтобы избежать вышеуказанной проблемы, Я использовал:
select * from FOO_TABLE ft where ft.foo_field not in ('A','B','C');
Вышеприведенный запрос выполняется так, как я ожидал.
Я часто использую следующие запросы, чтобы сгенерировать обратный запрос выше (чтобы получить все записи, которые содержат 'A' или 'B' или 'C' - включительно ):
select * from FOO_TABLE ft where ft.foo_field = any ('A','B','C');
select * from FOO_TABLE ft where ft.foo_field in ('A','B','C');
Я думаю, что нет никаких различий в результатах между двумя запросами, которые я использую как включено . Это правда!?
Почему запросы " exclusive " имеют разное поведение?