Null beim Vergleichen von Feldinhalten

19/01/2010 - 15:19 von Thomas Hase | Report spam
Hallo NG,

(mssql2k8)

der Vergleich vom 2 Tabellenzeilen führt zu einem falschen Ergebnis
sobald in Feld1: NULL steht

2 identische Tabellen

PK Feld1 Feld2 Feldn


SELECT Q.* , Z.*
FROM pub..m_verf AS Q, abo..m_verf AS Z
WHERE Q.PK = Z.PK
and (
not Q.Feld1 = Z.Feld1
or not Q.Feld2 = Z.Feld2
)


habe auch schon mit
SET ANSI_NULLS on und off getestet


Mit dem Statement vergliche ich große Tabellen und ziehe
als Ereignismenge die unterschiedlichen Zeilen heraus.

Frage:

Gibt es hier einen Workaround?



Mfg Thomas
 

Lesen sie die antworten

#1 Uwe Ricken
19/01/2010 - 15:33 | Warnen spam
Servus,

so sollte es klappen:

SELECT Q.* , Z.*
FROM pub..m_verf AS Q, abo..m_verf AS Z
WHERE Q.PK = Z.PK
and (
not Q.Feld1 = Z.Feld1
or not Q.Feld2 = Z.Feld2



SELECT q.*, z.*
FROM pub.m_verf AS q INNER JOIN dbo.m_verf z
ON (
q.pk = z.pk AND
(
ISNULL(q.Feld1, '') <> ISNULL(z.Feld1, '')
OR
ISNULL(q.Feld2, '') <> ISNULL(z.Feld2, '')
)
)

HTH ;-)

Uwe Ricken
db Berater GmbH
http://www.db-berater.de

MCTS: Microsoft SQL Server 2005
MCDBA: Microsoft SQL Server 2005

Ähnliche fragen