SQL Where Spalte != 1 bei Null Werten
WernerK
- sql
Hallo,
mal eine ganz simple Frage:
Beispiel Tabelle "Anwender"
Vorname, Nachname, Angemeldet
----------------------------------—
Karl, Napf, 1
Herbert, Maus, NULL
Gustav, Müller 1
Ulli, Meier NULL
Select Vorname, Nachname Where Angemeldet != 1
Warum kommt hier nichts zurück? Ich vermute wegen den NULL Spalten? Man müsste mit IS NULL arbeiten. Mich hat es nur etwas gewundert.
Gruss Werner
Hi,
Warum kommt hier nichts zurück? Ich vermute wegen den NULL Spalten? Man müsste mit IS NULL arbeiten. Mich hat es nur etwas gewundert.
ja, null muß immer speziell behandelt werden. Wenn Du wirklich alle Einträge haben willst, bei denen eine Spalte != 1 ist mußt Du (spalte != 1 OR spalte IS NULL)
in die Auswahlbedingungen aufnehmen.
cu,
Andreas a/k/a MudGuard
Hallo
Vorname, Nachname, Angemeldet ----------------------------------— Karl, Napf, 1 Herbert, Maus, NULL Gustav, Müller 1 Ulli, Meier NULL
Select Vorname, Nachname Where Angemeldet != 1
Warum kommt hier nichts zurück? Ich vermute wegen den NULL Spalten?
Ja.
Man müsste mit IS NULL arbeiten.
Ja. An der Stelle ist aber das Datenformat infrage zu stellen. Wenn jemand angemeldet sein kann oder nicht, handelt es sich um einen Ja-Nein-Status und nicht um einem Ja-Nichts-Status. Für diesen Fall bietet sich in MySQL der Feldtypt „Set“ mit '0'
und '1'
als möglichen Werten an (Angemeldet Set('0', '1') DEFAULT '0'
). In MS SQL wäre das der Typ „Bit“, der von sich aus die 0
und die 1
als Entsprechungen für False
und True
bereitstellt.
Tschö, Auge
Tach!
Warum kommt hier nichts zurück? Ich vermute wegen den NULL Spalten?
Ja.
Wann immer NULL im Spiel ist, kann eine Operation damit nur NULL zurückliefern, wenn nicht spezielle NULL-Operatoren verwendet werden. Und NULL wird im booleschen Kontext zu false, so dass Bedingungen nicht erfüllt werden können.
Für diesen Fall bietet sich in MySQL der Feldtypt „Set“ mit
'0'
und'1'
als möglichen Werten an (Angemeldet Set('0', '1') DEFAULT '0'
).
SET ist in dem Fall ungeeignet. Es handelt sich hier nicht um Schrödingers Katze, die das eine oder das andere oder auch beides oder nichts sein kann.
Ein passender Typ ist hier BOOL oder BOOLEAN, das ein Synonym zu TINYINT ist. Also auch jeder beliebige Integertyp kann hier verwendet werden.
dedlfix.