Abfrage bringt falsches Ergebis

19/02/2010 - 20:14 von Richard Hoelzel | Report spam
Hallo zusammen,

über eine Abfrage selektiere ich Datensàtze mit folgender WHERE-Bedingung:

"…WHERE [Fahrten] = 'a' AND [BezirkIndex] <> 'X'…"

Es hat sich nun gezeigt, dass bei dem Ergebnis der Abfrage ein Datensatz
fehlt, weil einmal bei [BezirkIndex] nichts eingetragen ist.

Beispiel:

[Nr] - [Fahrten] – [BezirkIndex]
1 a C
2 a B
3 a kein Eintrag
4 a X

Nach obiger WHERE Bedingung werden die Datensàtze 1 und 2 ausgegeben, es
sollte jedoch auch Satz-Nr. 3 kommen, weil [= 'a' AND <> 'X']

Richtiges Ergebnis ergibt es, wenn ich in dem WHERE-Zweig noch "OR Ist
Null" einfüge.
"…WHERE [Fahrten] = 'a' AND [BezirkIndex] <> 'X' OR [BezirkIndex] Is Null…"


Meine Frage nun,
ist denn mein Vorgehen hier richtig, muss ich denn wirklich auch immer nach
"Ist Null" abfragen?

(Win-XP; Acc-XP)

Ich bedanke mich schon für Antworten, Anregungen
Und wünsche noch ein schönes Wochenene

Richard
 

Lesen sie die antworten

#1 Stefan Hoffmann
19/02/2010 - 20:24 | Warnen spam
hallo Richard,

On 19.02.2010 20:14, Richard Hoelzel wrote:
"…WHERE [Fahrten] = 'a' AND [BezirkIndex]<> 'X' OR [BezirkIndex] Is Null…"


Kurz gesagt: Man 'Nichts' (NULL) nicht mit einem Wert vergleichen. Das
ist im Grunde die Geschichte mit den Äpfeln und Birnen. NULL steht ja
explizit für 'kein Wert'.

Meine Frage nun,
ist denn mein Vorgehen hier richtig, muss ich denn wirklich auch immer nach
"Ist Null" abfragen?


Ja, da Vergleiche, welcher Art auch immer, mit NULL ein False als
Ergebnis haben, bzw. ein undefiniert.

http://articles.techrepublic.com.co...34252.html

mfG

Ähnliche fragen