因此,我通过抓取数据库A中的随机行并根据其关键列在数据库B中搜索这些行来比较两个Oracle数据库。然后我比较java中返回的行。Oracle选择包含NULL值的IN子句列
我使用下面的查询使用从数据库中的键列来查找数据库B行:
select * from mytable
Where (Key_Column_A,Key_Column_B,Key_Column_C)
in (('1','A', 'cat'),('2','B', 'dog'),('3','C', ''));
这只是正常的前两个集的密钥,但第三个关键('3 ','C','')不起作用,因为第三列中有一个空值。将语句更改为('3','C',NULL)或将SQL更改为
select * from mytable
Where (Key_Column_A,Key_Column_B,Key_Column_C)
in ((('1','A', 'cat'),('2','B', 'dog'),('3','C', ''))
OR (Key_Column_A,Key_Column_B,Key_Column_C) IS NULL);
也不起作用。
有没有办法在IN子句中包含空列?如果没有,是否有办法有效地做同样的事情? (我目前唯一的解决方案是创建一个检查以确保在我的密钥中没有可为空的列,这会使此过程相当无效且有点混乱)。
您是否动态生成此SELECT语句? –
@BobJarvis是的,我是。 – JoshKni8