Latest web development tutorials

traitement de la valeur NULL MySQL

Nous savons déjà MySQL en utilisant la commande SQL SELECT avec clause WHERE pour lire les données de la table de données, mais les champs de critères de requête fournis lorsque NULL, la commande peut ne pas fonctionner correctement quand.

Pour traiter ce cas, MySQL fournit trois grands opérateurs:

  • IS NULL: Lorsque la valeur de la colonne est NULL, l'opérateur renvoie true.
  • IS NOT NULL: Lorsque la valeur de la colonne est NULL, l'opérateur renvoie true.
  • <=>: Opérateurs de comparaison (= différents de l'opérateur) et renvoie vrai lorsque l'on compare les deux valeurs est NULL.

opération de comparaison de condition A propos NULL est spécial. Vous ne pouvez pas utiliser = NULL ou! = NULL trouver des valeurs NULL dans la colonne.

En MySQL, les valeurs NULL comparer avec une autre valeur (même NULL) renvoie toujours faux, qui est, NULL = NULL renvoie false.

MySQL utilise la manipulation NULL l'IS NULL et IS NOT NULL opérateur.


Les valeurs NULL dans l'invite de commande

L'exemple suivant suppose que la base de données w3big tables tcount_tbl contenant deux w3big_author et w3big_count, w3big_count définir des valeurs NULL insertion.

Exemples

Essayez les exemples suivants:

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>

L'exemple suivant, vous pouvez voir et = = opérateur ne fonctionne pas !:

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)

Trouver la table de données w3big_count si la colonne est NULL, vous devez utiliser l'IS NULL et IS NOT NULL, les exemples suivants:

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)

Utiliser PHP valeur NULL de traitement de script

scripts PHP vous pouvez si ... else gérer si une variable est vide, et génère l'instruction conditionnelle correspondante.

Les exemples suivants définissent la variable $ w3big_count PHP, puis utilisez la variable avec la table de données w3big_count champs de comparaison:

<?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);
?>