Mailinglisten-Archive |
>Hi Wolfgang, >> NULL != 0 >sach ich doch ! >Aber es hoert ja keiner zu ... ;-) >Und ansonsten ging es um Char-Fields die leer sind. >Er sucht nach IS NULL und findet nix, weil '' drin >steht. Erklaer Du es ihm doch noch mal ... ;-) Hi Norbert, Hat a bisserl gedauert (es gibt ja noch was anderes als am Computer rumhacken ;-) ), aber ich versuchs mal. In http://www.mysql.com/doc/en/Problems_with_NULL.html ist das eigentlich recht gut beschrieben, aber bei manchen Leuten haperts an der Sprache (englisch) ;-) Da steht z.B.: Das Konzept der NULL - Werte ist ein bekanntes Problem von MySQL - Anfängern die oft glauben, dass NULL - Werte das selbe seien wie leere Strings. Dies ist aber nicht der Fall. Diese zwei Query - Anfragen sind z.B.: völlig verschieden: mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); Beide Anfragen fügen einen Wert in das Feld phone ein, aber die erste füllt das Feld mit einen NULL - Wert während die zweite einen leeren String einfügt. Der erste Wert (NULL) könnte bedeuten, dass die Telefonnummer nicht bekannt ist, der zweite Wert ('') besagt, dass die betreffende Person gar kein Telefon hat. In SQL ist ein Vergleich mit jedem anderen Wert (auch '') immer false (ausser mit NULL selbst). Ein Ausdruck (expression) der einen NULL - Wert enthält erzeugt immer einen NULL - Wert, da die Interpretation der Operatoren und Funktionen sonst zu kompliziert werden würden. Alle Felder im folgenden Beispiel erzeugen einen NULL - Wert: mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL); Wenn Sie nach einem Feld mit einem NULL - Wert suchen wollen können Sie nicht "= NULL" verwenden. Der folgende Ausdruck gibt keine Reihen zurück, da expr = NULL false zurückgibt, wie bei allen Vergleichen: mysql> SELECT * FROM my_table WHERE phone = NULL; Um nach NULL - Werten zu suchen, müssen Sie IS NULL verwenden. Die folgenden Beispiele zeigen Ihnen wie Sie die NULL - Werte (unbekannte Telefonnummer) und die Leute die kein Telefon haben finden können: mysql> SELECT * FROM my_table WHERE phone IS NULL; mysql> SELECT * FROM my_table WHERE phone = ""; [...] Der Rest sind Ausnahmen und Besonderheiten... (spar ich mir jetzt ;-) ) Wenn er es jetzt net kapiert soll er Tetris spielen ;-)) MfG Wolfgang -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive