因此,我通過抓取數據庫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