Zebulon: mySQL: Abfrage, ob Zeit gesetzt

Beitrag lesen

Nolimetongere,

Quelle: http://www.mysql.com/doc/de/Problems_with_NULL.html

------

A.5.3 Probleme mit NULL-Werten

Das Konzept des NULL-Wert ist eine häufige Quelle der Verwirrung für SQL-Anfänger. Diese denken häufig, NULL sei dasselbe wie eine leere Zeichenkette ''. Das ist nicht der Fall! So sind zum Beispiel folgende Statements grundverschieden:

mysql> INSERT INTO meine_tabelle (Telefon) VALUES (NULL);
mysql> INSERT INTO meine_tabelle (Telefon) VALUES ("");

Beide Statements fügen einen Wert in die Telefon-Spalte ein, aber das erste fügt einen NULL-Wert und das zweite eine leere Zeichenkette ein. Die Bedeutung des ersten ist etwa Telefonnummer unbekannt'' und des zweiten Keine Telefonnummer''.

In SQL ist der NULL-Wert im Vergleich mit jedem anderen Wert immer UNWAHR (false), selbst im Vergleich mit NULL. Ein Ausdruck, der NULL enthält, erzeugt immer einen NULL-Wert, ausser wenn es in der Dokumentation der Operatoren und Funktionen, die im Ausdruck beteiligt sind, anders angegeben ist. Alle Spalten im folgenden Beispiel geben NULL zurück:

mysql> SELECT NULL,1+NULL,CONCAT('unsichtbar',NULL);

Wenn Sie nach Spaltenwerten suchen, die NULL sind, können Sie nicht =NULL benutzen. Folgendes Statement gibt keine Zeilen zurück, weil ausdruck = NULL für jeden beliebigen Ausdruck UNWAHR (false) ist:

mysql> SELECT * FROM meine_tabelle WHERE Telefon = NULL;

Um nach NULL-Werten zu suchen, müssen Sie IS NULL benutzen. Folgende Beispiele zeigen, wie Sie die NULL-Telefonnummer und die leere Telefonnummer finden:

mysql> SELECT * FROM meine_tabelle WHERE Telefon IS NULL;
mysql> SELECT * FROM meine_tabelle WHERE Telefon = "";

In MySQL können Sie - wie bei vielen anderen SQL-Servern - keine Spalten indexieren, die NULL-Werte enthalten dürfen. Sie müssen solche Spalten aus NOT NULL deklarieren. Sie dürfen in eine indexierte Spalte keine NULL-Werte einfügen.

Wenn Sie Daten mit LOAD DATA INFILE einlesen, werden leere Spalten mit '' aktualisiert. Wenn Sie einen NULL-Wert in einer Spalte haben wollen, müssen Sie in der Textdatei \N benutzen. Unter manchen Umständen kann auch das Literalwort 'NULL' benutzt werden. See section 7.4.9 LOAD DATA INFILE-Syntax.

Wenn Sie ORDER BY benutzen, werden NULL-Werte zuerst angezeigt. Wenn Sie mit DESC in absteigender Reihenfolge sortieren, werden NULL-Werte zuletzt angezeigt. Wenn Sie GROUP BY benutzen, werden alle NULL-Werte als gleich betrachtet.

Um die Handhabung von NULL zu erleichtern, können Sie die IS NULL- und IS NOT NULL-Operatoren und die IFNULL()-Funktion benutzen.

Bei manchen Spaltentypen werden NULL-Werte besonders behandelt. Wenn Sie NULL in die erste TIMESTAMP-Spalte einer Tabelle einfügen, werden das aktuelle Datum und die aktuelle Zeit eingefügt. Wenn Sie NULL in eine AUTO_INCREMENT-Spalte einfügen, wird die nächste Zahl in der Zahlenfolge eingefügt.

------

Zebulon
The Interim Polytoximonium

--
<img src="http://www.dmp-web.de/xCell/zebulon.jpg" border="0" alt="">
[bitte bitte weg mich nicht -
so lang ich träume gibts nur mich]