Wenn Sie eine Verknüpfung durchführen, die wie folgt aussieht
~~SELECT T1.KeyField1, T1.KeyField2, T2.Field3 FROM T1 JOIN T2 ON T1.KeyField1 = T2.KeyField1 AND T1.KeyField2 = T2.KeyField2
Gibt es eine Möglichkeit, NULLS nicht zuzulassen, ähnlich wie bei den Ergebnissen, die diese Abfrage zurückgeben würde
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~~
EDITAR
Ich habe die Frage eigentlich falsch gestellt.... Lassen Sie es mich noch einmal versuchen.
Wir vergleichen neue Daten mit alten Daten und suchen nach Datensätzen, bei denen die Zeilen genau gleich sind.
Also beide Tabellen definiert:
CREATE TABLE [Table](
[Identifier] [int] IDENTITY(1,1) NOT NULL,
[Key1] [varchar](50) NOT NULL,
[Data1] [varchar](50) NULL,
[Data2] [varchar](50) NULL
Wenn ich die Abfrage mache:
DELETE
FROM T1 JOIN T2 ON T1.Key1 = T2.Key1
AND T1.Data1 = T2.Data2 AND T1.Data2 = T2.Data2
Geben Sie
T1 & T2
| Key1 | Data1 | Data2 |
| 1000 | 123 Main St | <NULL> |
| 1001 | 456 High St | FLOOR 2 |
Dies würde den doppelten Datensatz 1000 aus T1 nicht entfernen, da Data2 NULL ist.
Gibt es, abgesehen von der Verwendung eines magischen Werts in der Verknüpfung, eine andere Möglichkeit, diese zu vergleichen?
Mir ist klar, dass ich die Berater dazu bringen sollte, den Code so umzuschreiben, dass alle NULLS als '' eingefügt werden, aber das ist an dieser Stelle ein großes Unterfangen. Ich überlege auch, die Zeile zu hashen, um nach Unterschieden zu suchen.