Heim >Datenbank >MySQL-Tutorial >MySQL-NULL-Wert-Behandlung
MySQL verwendet den SQL-SELECT-Befehl und die WHERE-Klausel, um Daten aus der Datentabelle zu lesen. Wenn das bereitgestellte Abfragebedingungsfeld jedoch NULL ist, funktioniert der Befehl möglicherweise nicht ordnungsgemäß.
Um mit dieser Situation umzugehen, stellt MySQL drei Hauptoperatoren zur Verfügung:
IS NULL: Wenn der Spaltenwert NULL ist, gibt dieser Operator „true“ zurück.
IST NICHT NULL: Wenn der Spaltenwert nicht NULL ist, gibt der Operator „true“ zurück.
Die bedingte Vergleichsoperation auf NULL ist etwas ganz Besonderes. Sie können = NULL oder != NULL nicht verwenden, um NULL-Werte in einer Spalte zu finden.
In MySQL gibt der Vergleich eines NULL-Werts mit einem anderen Wert (sogar NULL) immer „false“ zurück, d. h. NULL = NULL gibt „false“ zurück.
MySQL verarbeitet NULL mit den Operatoren IS NULL und IS NOT NULL.
NULL-Werte in der Eingabeaufforderung verwenden
Im folgenden Beispiel wird davon ausgegangen, dass die Tabelle tcount_tbl in der Datenbank RUNOOB zwei Spalten enthält, runoob_author und runoob_count, und ein NULL-Wert ist in runoob_count gesetzt.
Versuchen Sie das folgende Beispiel:
MariaDB [RUNOOB]> select * from tcount_tbl;
+---------------+-- - ----------+
|. runoob_count |
+--------------+---------- ----+
|. mahran 20 |
| 1 |
+--------------+- -------------+
6 Zeilen im Satz (0,00 Sek.)
Sie können im folgenden Beispiel sehen, dass die Operatoren = und != dies nicht tun Arbeit:
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl WHERE runoob_count = NULL;Leerer Satz (0,00 Sek.)
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl WHERE runoob_count != NULL ;Leerer Satz (0,00 Sek.)
Finden Sie heraus, ob die runoob_count-Spalte in der Datentabelle NULL ist, IS NULL und IS NOT NULL müssen verwendet werden, wie im folgenden Beispiel:
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl where runoob_count IS NULL;
|. runoob_count |
+--------------+-----------+| 🎜>|. Jen |. NULL |
+--------------+- -------------+
2 Zeilen im Satz ( 0,00 Sek.)
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl where runoob_count IS NOT NULL;
+--------------+----- ---------+
|. runoob_count |
+------------------ --------- 🎜> |. 20 | |.
|. 1 |
+-------------+-------------+
4 Reihen in set (0,00 Sek.)
PHP-Skript verwenden, um NULL-Werte zu verarbeiten
Im PHP-Skript können Sie die if...else-Anweisung verwenden, um zu verarbeiten, ob die Variable leer ist, und die zu generieren entsprechende bedingte Anweisung.
Im folgenden Beispiel legt PHP die Variable $runoob_count fest und verwendet diese Variable dann zum Vergleich mit dem Feld runoob_count in der Datentabelle:
$dbhost =' localhost:3036';
$dbuser ='root';
$dbpass ='rootpassword';
$conn = mysql_connect($dbhost, $ dbuser, $dbpass );
if(! $conn )
{
die('Verbindung konnte nicht hergestellt werden: '. mysql_error());
}
if( isset($runoob_count ))
{
$sql ='SELECT runoob_author, runoob_count
FROM tcount_tbl
WHERE runoob_ count IS NOT NULL';
}
else
{
$sql ='SELECT runoob_author, runoob_count
FROM tcount_tbl
WHERE runoob_count IS NULL';
}
mysql_select_db('RUNOOB');
$retval = mysql_query ( $sql, $ conn );
if(! $retval )
{
die('Daten konnten nicht abgerufen werden: '. mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "Author:{$row['runoob_author']}
" .
"Anzahl: {$row['runoob_count']}
"------------ ----- --------------
";
}
echo „Daten erfolgreich abgerufen“;
mysql_close($conn );
?>
Ergebnis ausführen: