Я разрабатываю динамический SQL-запрос, который проверяет исходную таблицу на целевой таблице. Я хотел бы сравнить строки источника с строками цели, чтобы проверить различия.Сравнение NULL
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-col1 имеет значение null, а table-b col1 имеет значение null, то я считаю их равными.
Я знаю, что могу помещать ISNULL вокруг своих столбцов, но это динамический запрос, который создается, поэтому я знаю только имя столбца, а не тип данных.
Любые предложения?
Что делать, если (хотя, я думаю, это маловероятно из-за имени) поле 'key' равно NULL? 'ON (B.KEY = A.KEY ИЛИ (A.KEY NULL AND B.KEY NULL))'? – MatBailie
@ Dems - Это не (или, по крайней мере, вопрос только упоминает 'col1, col2'). –
Спасибо! Работает отлично! – user829237