Latest web development tutorials

MySQL NULL Wertverarbeitung

Wir wissen bereits, MySQL die SQL SELECT-Befehl mit WHERE-Klausel, die Daten in der Datentabelle zu lesen, aber die Abfragekriterien vorgesehenen Felder ein, wenn NULL, wird der Befehl nicht richtig arbeiten kann, wenn.

Um diesen Fall zu behandeln, bietet MySQL drei großen Betreiber:

  • IS NULL: Wenn der Wert der Spalte NULL ist, der Operator true zurück.
  • NULL nicht ist: Wenn der Wert der Spalte nicht NULL ist, der Operator true zurück.
  • <=>: Vergleichsoperatoren (= sich von dem Betreiber) und true zurückgibt , wenn die beiden Wert ist NULL zu vergleichen.

Über NULL-Bedingung Vergleichsoperation ist etwas Besonderes. Sie können nicht verwenden = NULL oder! = NULL NULL-Werte in der Spalte finden.

In MySQL vergleichen NULL-Werte mit einem anderen Wert (auch NULL) immer false zurück, das heißt, NULL = NULL false zurückgibt.

MySQL NULL Handhabung mit der IS NULL und IS NOT NULL-Operator.


NULL-Werte in der Eingabeaufforderung

Das folgende Beispiel geht davon aus, dass die Datenbank w3big Tabellen tcount_tbl mit zwei w3big_author und w3big_count, w3big_count gesetzt Einsatz NULL-Werte.

Beispiele

Versuchen Sie, die folgenden Beispiele:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> create table tcount_tbl
    -> (
    -> w3big_author varchar(40) NOT NULL,
    -> w3big_count  INT
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('mahran', 20);
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('mahnaz', NULL);
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('Jen', NULL);
mysql> INSERT INTO tcount_tbl
    -> (w3big_author, w3big_count) values ('Gill', 20);

mysql> SELECT * from tcount_tbl;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
+-----------------+----------------+
4 rows in set (0.00 sec)

mysql>

Im folgenden Beispiel sehen Sie, = und = Operator funktioniert nicht !:

mysql> SELECT * FROM tcount_tbl WHERE w3big_count = NULL;
Empty set (0.00 sec)
mysql> SELECT * FROM tcount_tbl WHERE w3big_count != NULL;
Empty set (0.01 sec)

Finden Sie die Datentabelle w3big_count, ob die Spalte NULL ist, müssen Sie verwenden die IS NULL und IS NOT NULL, werden die folgenden Beispiele:

mysql> SELECT * FROM tcount_tbl 
    -> WHERE w3big_count IS NULL;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahnaz          |           NULL |
| Jen             |           NULL |
+-----------------+----------------+
2 rows in set (0.00 sec)
mysql> SELECT * from tcount_tbl 
    -> WHERE w3big_count IS NOT NULL;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| Gill            |             20 |
+-----------------+----------------+
2 rows in set (0.00 sec)

Verwenden Sie PHP NULL Skriptverarbeitung Wert

PHP-Skripte können Sie, wenn ... else-Anweisung zu behandeln, wenn eine Variable leer ist, und erzeugt die entsprechende bedingte Anweisung.

Die folgenden Beispiele $ w3big_count PHP-Variable, dann verwenden Sie die Variable mit dem Datentabelle w3big_count Vergleichsfelder:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
if( isset($w3big_count ))
{
   $sql = 'SELECT w3big_author, w3big_count
           FROM  tcount_tbl
           WHERE w3big_count = $w3big_count';
}
else
{
   $sql = 'SELECT w3big_author, w3big_count
           FROM  tcount_tbl
           WHERE w3big_count IS $w3big_count';
}

mysql_select_db('w3big');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "Author:{$row['w3big_author']}  <br> ".
         "Count: {$row['w3big_count']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>