Если вы выполняете объединение, которое выглядит следующим образом
SELECT T1.KeyField1, T1.KeyField2, T2.Field3
FROM T1 JOIN T2 ON T1.KeyField1 = T2.KeyField1 AND T1.KeyField2 = T2.KeyField2
Есть ли способ не позволить NULLS совпадать с результатами, полученными в результате этого запроса
SELECT T1.KeyField1, T1.KeyField2, T2.Field3
FROM T1 JOIN T2 ON T1.KeyField1 = T2.KeyField1 AND T1.KeyField2 = T2.KeyField2
AND T1.KeyField2 IS NOT NULL AND T2.KeyField2 IS NOT NULL
РЕДАКТИРОВАТЬ
Я фактически задал вопрос неправильно .... Позвольте мне повторить попытку.
Мы сравниваем новые данныек старым данным и поиск записей, где строки в точности совпадают.
Итак, обе таблицы определены:
CREATE TABLE [Table](
[Identifier] [int] IDENTITY(1,1) NOT NULL,
[Key1] [varchar](50) NOT NULL,
[Data1] [varchar](50) NULL,
[Data2] [varchar](50) NULL
Если я сделаю запрос:
DELETE
FROM T1 JOIN T2 ON T1.Key1 = T2.Key1
AND T1.Data1 = T2.Data2 AND T1.Data2 = T2.Data2
Give
T1 & T2
| Key1 | Data1 | Data2 |
| 1000 | 123 Main St | <NULL> |
| 1001 | 456 High St | FLOOR 2 |
Это не приведет к удалению дубликата записи 1000 из T1, поскольку Data2 равен NULL.
Помимо использования магического значения в объединении, есть ли другой способ сравненияэто?
Я понимаю, что я должен заставить консультантов переписать код, чтобы вставить все NULLS как '', но на этом этапе это огромная задача.Я также смотрю на хеширование строки, чтобы найти различия.