Итак, я сравниваю две базы данных Oracle, захватывая случайные строки в базе данных A и ищу эти строки в базе данных B на основе своих ключевых столбцов. Затем я сравниваю строки, которые возвращаются в java.Oracle Выбор столбцов с предложением IN, который включает значения NULL
Я использую следующий запрос для поиска строк в базе данных B, используя ключевые столбцы из базы данных A:
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