tag:forum.selfhtml.org,2005:/selfSQL Where Spalte != 1 bei Null Werten – SELFHTML-Forum2018-06-13T10:01:25Zhttps://forum.selfhtml.org/self/2018/jun/13/sql-where-spalte-gleich-1-bei-null-werten/1724600#m1724600WernerK2018-06-13T09:27:53Z2018-06-13T09:28:57ZSQL Where Spalte != 1 bei Null Werten<p>Hallo,</p>
<p>mal eine ganz simple Frage:</p>
<p>Beispiel Tabelle "Anwender"</p>
<pre><code class="block">Vorname, Nachname, Angemeldet
----------------------------------—
Karl, Napf, 1
Herbert, Maus, NULL
Gustav, Müller 1
Ulli, Meier NULL
</code></pre>
<pre><code class="block language-sql"><span class="token keyword">Select</span> Vorname<span class="token punctuation">,</span> Nachname <span class="token keyword">Where</span> Angemeldet <span class="token operator">!=</span> <span class="token number">1</span>
</code></pre>
<p>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.</p>
<p>Gruss
Werner</p>
https://forum.selfhtml.org/self/2018/jun/13/sql-where-spalte-gleich-1-bei-null-werten/1724601#m1724601MudGuardhttp://www.andreas-waechter.de/2018-06-13T09:30:38Z2018-06-13T09:30:38ZSQL Where Spalte != 1 bei Null Werten<p>Hi,</p>
<blockquote>
<p>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.</p>
</blockquote>
<p>ja, null muß immer speziell behandelt werden. Wenn Du wirklich alle Einträge haben willst, bei denen eine Spalte != 1 ist mußt Du <code>(spalte != 1 OR spalte IS NULL)</code> in die Auswahlbedingungen aufnehmen.</p>
<p>cu,<br>
Andreas a/k/a MudGuard</p>
https://forum.selfhtml.org/self/2018/jun/13/sql-where-spalte-gleich-1-bei-null-werten/1724603#m1724603Auge2018-06-13T09:35:32Z2018-06-13T09:35:32ZSQL Where Spalte != 1 bei Null Werten<p>Hallo</p>
<blockquote>
<pre><code class="block">Vorname, Nachname, Angemeldet
----------------------------------—
Karl, Napf, 1
Herbert, Maus, NULL
Gustav, Müller 1
Ulli, Meier NULL
</code></pre>
<pre><code class="block language-sql"><span class="token keyword">Select</span> Vorname<span class="token punctuation">,</span> Nachname <span class="token keyword">Where</span> Angemeldet <span class="token operator">!=</span> <span class="token number">1</span>
</code></pre>
<p>Warum kommt hier nichts zurück? Ich vermute wegen den NULL Spalten?</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Man müsste mit IS NULL arbeiten.</p>
</blockquote>
<p>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 <code>'0'</code> und <code>'1'</code> als möglichen Werten an (<code>Angemeldet Set('0', '1') DEFAULT '0'</code>). In MS SQL wäre das der Typ „Bit“, der von sich aus die <code>0</code> und die <code>1</code> als Entsprechungen für <code>False</code> und <code>True</code> bereitstellt.</p>
<p>Tschö, Auge</p>
<div class="signature">-- <br>
Eine Kerze stand [auf dem Abort] bereit, und der Almanach des vergangenen Jahres hing an einer Schnur. Die Herausgeber kannten ihre Leser und druckten den Almanach auf weiches, dünnes Papier.<br>
Kleine freie Männer von Terry Pratchett
</div>
https://forum.selfhtml.org/self/2018/jun/13/sql-where-spalte-gleich-1-bei-null-werten/1724605#m1724605dedlfix2018-06-13T10:01:25Z2018-06-13T10:01:51ZSQL Where Spalte != 1 bei Null Werten<p>Tach!</p>
<blockquote>
<blockquote>
<p>Warum kommt hier nichts zurück? Ich vermute wegen den NULL Spalten?</p>
</blockquote>
<p>Ja.</p>
</blockquote>
<p>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.</p>
<blockquote>
<p>Für diesen Fall bietet sich in MySQL der Feldtypt „Set“ mit <code>'0'</code> und <code>'1'</code> als möglichen Werten an (<code>Angemeldet Set('0', '1') DEFAULT '0'</code>).</p>
</blockquote>
<p>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.</p>
<p>Ein passender Typ ist hier BOOL oder BOOLEAN, das ein Synonym zu TINYINT ist. Also auch jeder beliebige Integertyp kann hier verwendet werden.</p>
<p>dedlfix.</p>