Unterschied zwischen NULL, sowie '', und NULL
AhANiBoy
- datenbank
hi
user
varchar(20) NOT NULL, sagt doch aus,
daß "user" NICHT leer sein darf, oder?
insert into foo (id
, user
) values ('', ''); geht jedoch!
select * from foo; zeigt mir,
dass das Feld "user" in der entsprechenden Zeile leer ist.
Warum ist dem so?
Ich definierte doch eindeutig dass es NOT NULL ist!
Was ist dann ein NULL Feld?
Also was ist der Unterschied zwischen NULL und NOT NULL und '' ?
Alle scheinen leere Felder zu erlauben!
Danke...
Schönen Tag noch wünscht
Euer AhANiBoy
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
hi Vinzenz!
Lieben Dank für die rasche Hilfe um die Uhrzeit!
Jetzt ist bald alles fertig für die Schule :-)
Dankende Grüße
AhANiBoy
Tag zusammen,
NULL: keine Daten vorhanden
NOT NULL: Daten vorhanden
'': Leerstring vorhanden, somit Daten vorhanden :-)
Und weil das alles so ist, man aber gelegentlich auch '' unterbinden möchte ohne den Inhalt auf NULL zu setzen gibt es z.B. in MS-Access (ok, nicht wirklich ein gutes DBMS, aber immerhin) noch die zusätzliche Angabe, ob leere Zeichenfolgen erlaubt sind. Nach solchen Fehlern sucht man ne Weil wenn man nicht damit rechnet... Ist aber glaub ich eher nicht Standard-SQL, kann aber über CONSTRAINTS auch anderweitig realisiert werden.
MfG
Rouven