Negation in SQL bringt unerwartetes Ergebnis

28/01/2008 - 17:55 von Julian | Report spam
Hallo zusammen,

ich habe folgende Abfrage gemacht:

SELECT adressen.*
FROM adressen
WHERE (((adressen.XY)='[BLABLA]'));

welche einfach alle Datensàtze auswirft, welche im Feld adressen.XY
den Wert [BLABLA] enthalten

die Negation

SELECT adressen.*
FROM adressen
WHERE not (((adressen.XY)='[BLABLA]'));

wirft korrekterweise alle AUßER adressen.XY mit dem Wert [BLABLA]
aus.
Zusàtzlich werden aber auch die adressen.XY OHNE WERT AUCH NICHT
angezeigt.

Handelt es sich hierbei um ein Access-Problem oder um ein
gedankliches?


Wie kann ich das Problem lösen? ich benötige die Negation.

Beste Grüße,
Julian Ivanica
 

Lesen sie die antworten

#1 Thomas Möller
28/01/2008 - 18:00 | Warnen spam
Hallo Julian,

Julian schrieb:
ich habe folgende Abfrage gemacht:

SELECT adressen.*
FROM adressen
WHERE (((adressen.XY)='[BLABLA]'));

welche einfach alle Datensàtze auswirft, welche im Feld adressen.XY
den Wert [BLABLA] enthalten

die Negation

SELECT adressen.*
FROM adressen
WHERE not (((adressen.XY)='[BLABLA]'));

wirft korrekterweise alle AUßER adressen.XY mit dem Wert [BLABLA]
aus.
Zusàtzlich werden aber auch die adressen.XY OHNE WERT AUCH NICHT
angezeigt.



wenn ein Feld keinen Wert hat, dann ist dort "NULL" gespeichert. Mit
diesem Wert kannst Du keinen Vergleich durchführen.
Dazu brauchst Du eine gesonderte Funktion. Schau Dir dazu mal in der OH
den Befehl >>NZ<< nàher an.

So sollte es gehen:

SELECT *
FROM adressen
WHERE NOT NZ(XY,"") = '[BLABLA]';


HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen