Vinzenz Mai: Unterschied zwischen NULL, sowie '', und NULL

Beitrag lesen

Hallo AhANiBoy

user varchar(20) NOT NULL,    sagt doch aus,
daß "user"  NICHT leer sein darf, oder?

dass in der Spalte user stets etwas stehen muss.

insert into foo (id, user) values ('', '');   geht jedoch!

Warum auch nicht, das ist der Leerstring, das ist was ganz anderes als NULL.
Die Ziffer 0 ist übrigens auch was anderes als NULL.

Siehe <http://dev.mysql.com/doc/mysql/de/null-values.html@MySQL-Handbuch, NULL-Werte>.

select * from foo;   zeigt mir,
dass das Feld "user" in der entsprechenden Zeile leer ist.

Es ist nicht "leer", es steht der Leerstring drin. Das ist ein subtiler Unterschied.

Teste bitte

SELECT * from foo WHERE user IS NULL

Was ist dann ein NULL Feld?

s.o.

Also was ist der Unterschied zwischen NULL und NOT NULL und '' ?

NULL:     keine Daten vorhanden
NOT NULL: Daten vorhanden
'':       Leerstring vorhanden, somit Daten vorhanden :-)

Alle scheinen leere Felder zu erlauben!

Nö.

Freundliche Grüße

Vinzenz