Gestion des valeurs MySQL NULL
Traitement des valeurs NULL MySQL
Nous savons déjà que MySQL utilise la commande SQL SELECT et la clause WHERE pour lire les données dans la table de données, mais lorsque le fourni Lorsque le champ de condition de requête est NULL, la commande peut ne pas fonctionner correctement.
Afin de gérer cette situation, MySQL propose trois opérateurs majeurs :
IS NULL : Lorsque la valeur de la colonne est NULL, ceci le symbole d’opération renvoie vrai.
IS NOT NULL : Lorsque la valeur de la colonne n'est pas NULL, l'opérateur renvoie true.
<=> : opérateur de comparaison (différent de l'opérateur =), renvoie vrai lorsque les deux valeurs comparées sont NULL.
L'opération de comparaison conditionnelle sur NULL est assez particulière. Vous ne pouvez pas utiliser = NULL ou != NULL pour rechercher des valeurs NULL dans une colonne.
Dans MySQL, la comparaison d'une valeur NULL avec toute autre valeur (même NULL) renvoie toujours false, c'est-à-dire que NULL = NULL renvoie false.
MySQL gère NULL à l'aide des opérateurs IS NULL et IS NOT NULL.
Remarque :
select * , columnName1+ifnull(columnName2,0) from tableName;
columnName1, columnName2 est de type int Lorsque columnName2 a une valeur null, columnName1+columnName2=null, ifnull(columnName2,0) Convertissez le valeur nulle dans columnName2 sur 0.
Utiliser la valeur NULL dans l'invite de commande
L'exemple suivant suppose que la table php_test_tbl dans la base de données php contient deux colonnes php_author et php_count,php_count Insérez la valeur NULL dans les paramètres.
Exemples
Essayez les exemples suivants :
Créer une table de données php_test_tbl
mysql> use php; Database changed mysql> create table php_test_tbl -> ( -> php_author varchar(40) NOT NULL, -> php_count INT -> ); Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO php_test_tbl (php_author, php_count) values ('PHP', 20); mysql> INSERT INTO php_test_tbl (php_author, php_count) values ('PHP中文网', NULL); mysql> INSERT INTO php_test_tbl (php_author,php_count) values ('Google', NULL); mysql> INSERT INTO php_test_tbl (php_author, php_count) values ('FK', 20); mysql> SELECT * from php_test_tbl; +---------------+--------------+ | php_author | php_count | +---------------+--------------+ | PHP | 20 | | php中文网 | NULL | | Google | NULL | | FK | 20 | +---------------+--------------+ 4 rows in set (0.01 sec)
Dans ce qui suit exemples Vous pouvez voir que les opérateurs = et != ne fonctionnent pas :
mysql> SELECT * FROM php_test_tbl WHERE php_count = NULL; Empty set (0.00 sec) mysql> SELECT * FROM php_test_tbl WHERE php_count != NULL; Empty set (0.01 sec)
Pour savoir si la colonne php_test_tbl de la table de données est NULL, vous devez utiliser IS NULL et IS NOT NULL, comme indiqué dans le exemple suivant :
mysql> SELECT * FROM php_test_tbl WHERE php_count IS NULL; +---------------+--------------+ | php_author | php_count | +---------------+--------------+ | PHP中文网 | NULL | | Google | NULL | +---------------+--------------+ 2 rows in set (0.01 sec) mysql> SELECT * from php_test_tbl WHERE php_count IS NOT NULL; +---------------+--------------+ | php_author | php_count | +---------------+--------------+ | PHP | 20 | | FK | 20 | +---------------+--------------+ 2 rows in set (0.01 sec)
Utiliser le script PHP pour gérer les valeurs NULL
Dans le script PHP, vous pouvez utiliser l'instruction if...else pour traiter si la variable est vide et générer l'instruction conditionnelle correspondante.
Dans l'exemple suivant, PHP définit la variable $php_count puis utilise cette variable pour comparer avec le champ php_count dans la table de données :
<?php
header("Content-Type: text/html;charset=utf-8");
$dbhost = 'localhost'; adresse de l'hôte du serveur mysql
$dbuser = 'root'; // nom d'utilisateur mysql
$dbpass = 'root'; dbpass);
if(! $conn )
{
die( 'Échec de la connexion : ' . mysqli_error($conn));
}
//Définir l'encodage pour éviter les caractères chinois tronqués
mysqli_query($conn, "set names utf8");
if(isset($runoob_count))
{
$sql = "SELECT php_author, php_count
FROM php_test_tbl
WHERE php_count = $php_count";
}
else
{
$sql = "SELECT php_author,php_count
" FROM php_test_tbl
OÙ php_count EST NULL";
}
mysqli_select_db( $conn, 'php' );
$retval = mysqli_query ( $conn, $sql );
if(! $retval )
{
die('Impossible de lire les données : ' .mysqli_error($conn));
>
echo ' <h2>Le site Web PHP chinois EST NULL test<h2>';
echo '<table border="1"> <tr><td>Auteur</td><td>Nombre de connexions< ;/td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
echo "<tr>".
"<td> {$row['php_author']} </td> ".
"<td>{$row[' php_count']} </td> ".
"</tr>" ;
>
echo '</table>';
mysqli_close($conn);
?>
Rendu :
Recommandation de didacticiel vidéo connexe : Étrange NULL