Я разрабатываю динамический SQL-запрос, который будет сверять исходную таблицу с целевой таблицей. Я хотел бы сравнить строки источника со строками целевого объекта, чтобы проверить различия.
CREATE TABLE TABLE_A (KEY INT, COL1 INT, COL2 INT)
CREATE TABLE TABLE_B (KEY INT, COL1 INT, COL2 INT)
Итак, я создал этот оператор:
SELECT A.* FROM TABLE_A A
INNER JOIN TABLE_B B
ON B.KEY = A.KEY
AND (B.COL1<>A.COL1 OR B.COL2<>A.COL2)
Но это работает только до тех пор, пока значения col1 и col2 не равны нулю. Если table-a col1 имеет значение null, а table-b col1 имеет значение null, я бы считал их равными.
Я знаю, что могу поставить ISNULL вокруг своих столбцов, но это динамический запрос, который создается, поэтому я знаю только имя столбца, а не тип данных.
Есть предложения?