English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nous savons que MySQL utilise la commande SQL SELECT et la clause WHERE pour lire des donées dans une table, mais lorsque le champ de condition de la requête fournie est NULL, cette commande peut ne pas fonctionner correctement.
Pour traiter ce type de situation, MySQL fournit trois opérateurs principaux:
IS NULL: Lorsque la valeur de la colonne est NULL, cet opérateur retourne true.
IS NOT NULL: Lorsque la valeur de la colonne n'est pas NULL, l'opérateur retourne true.
<=>: Les opérateurs de comparaison (différents de l'opérateur =), retournent true lorsque les deux valeurs comparées sont égales ou que l'une ou les deux sont NULL.
L'opération de comparaison de condition sur NULL est spéciale. Vous ne pouvez pas utiliser = NULL ou != NULL pour rechercher des valeurs NULL dans une colonne.
在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。
Dans MySQL, la comparaison de NULL avec toute autre valeur (même NULL) renvoie toujours NULL, c'est-à-dire NULL = NULL renvoie NULL .
Attention :
sélectionnez * , columnName1+ifnull(columnName2,0) from tableName;columnName1,columnName2 est de type int, columnName2 si, columnName1+columnName2=null, ifnull(columnName2,0) mettre columnName2 Les valeurs null sont converties en 0.
Dans l'exemple suivant, supposons que la base de données w3La table w dans codebox3codebox_test_tbl contient deux colonnes w3codebox_author et w3codebox_count, w3Insérez une valeur NULL dans codebox_count.
Essayez l'exemple suivant :
root@host# mysql -u root -p mot de passe; Entrez le mot de passe :******* mysql> use w3codebox; Base de données changée mysql> create table w3codebox_test_tbl -> ( -> w3codebox_author varchar(40) NOT NULL, -> w3codebox_count INT -> ); Requête OK, 0 lignes affectées (0.05 sec) mysql> INSERT INTO w3codebox_test_tbl (w3codebox_author,3codebox_count) valeurs ('w3codebox', 20); mysql> INSERT INTO w3codebox_test_tbl (w3codebox_author,3codebox_count) valeurs ('基础教程网', NULL); mysql> INSERT INTO w3codebox_test_tbl (w3codebox_author,3codebox_count) valeurs ('Google', NULL); mysql> INSERT INTO w3codebox_test_tbl (w3codebox_author,3codebox_count) valeurs ('FK', 20); mysql> SELECT * from w3codebox_test_tbl; +---------------+--------------+ | w3codebox_author | w3codebox_count | +---------------+--------------+ | w3codebox 20 | 基础教程网 | NULL | Google | NULL | FK 20 +---------------+--------------+ 4 rows in set (0.01 sec)
Dans l'exemple suivant, vous pouvez voir que les opérateurs = et != ne fonctionnent pas :
mysql> SELECT * FROM w3codebox_test_tbl WHERE w3codebox_count = NULL; Ensemble vide (0.00 sec) mysql> SELECT * FROM w3codebox_test_tbl WHERE w3codebox_count != NULL; Empty set (0.01 sec)
查找数据表中 w3codebox_test_tbl 列是否为 NULL,必须使用 IS NULL 和 IS NOT NULL,如下示例:
mysql> SELECT * FROM w3codebox_test_tbl WHERE w3codebox_count IS NULL; +---------------+--------------+ | w3codebox_author | w3codebox_count | +---------------+--------------+ | 基础教程网 | NULL | Google | NULL +---------------+--------------+ 2 rows in set (0.01 sec) mysql> SELECT * from w3codebox_test_tbl WHERE w3codebox_count IS NOT NULL; +---------------+--------------+ | w3codebox_author | w3codebox_count | +---------------+--------------+ | w3codebox 20 | FK 20 +---------------+--------------+ 2 rows in set (0.01 sec)
PHP 脚本中你可以在 if...else 语句来处理变量是否为空,并生成相应的条件语句。
以下示例中 PHP 设置了 $w3codebox_count 变量,然后使用该变量与数据表中的 w3codebox_count 字段进行比较:
<?php $dbhost = 'localhost'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8; if(isset($w3codebox_count)) { $sql = "SELECT3codebox_author,3codebox_count FROM3codebox_test_tbl WHERE w3codebox_count = $w3codebox_count"; } else { $sql = "SELECT3codebox_author,3codebox_count FROM3codebox_test_tbl WHERE w3codebox_count IS NULL"; } mysqli_select_db($conn, 'w3codebox'); $retval = mysqli_query($conn, $sql); if(! $retval) { die('Impossible de lire les données: ' . mysqli_error($conn)); } echo '<h2Tutoriel de base(oldtoolbag.com) IS NULL test<h2">; echo '<table border="1><tr><td>Auteur</td><td>Nombre de connexions</td></tr>'; while($row = mysqli_fetch_array($retval)) { echo "<tr>". "<td>{$row['w3codebox_author']}</td>". "<td>{$row['w3codebox_count'}</td>". "</tr>"; } echo '</table>'; mysqli_close($conn); ?>
Les résultats de la sortie sont affichés comme suit :