Répertoire d'articles
Comment MySQL gère-t-il les requêtes avec des valeurs non nulles ? ( Instruction SELECT : IS NOT NULL)
Gestion des nulls dans 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 champ de condition de requête fourni est NULL, la commande peut ne pas fonctionner correctement.
Pour gérer cette situation, MySQL propose trois opérateurs majeurs :
- EST NULL :Cet opérateur renvoie true lorsque la valeur de la colonne est NULL.
- EST NON NULLE:L'opérateur renvoie true lorsque la valeur de la colonne n'est pas NULL.
- <=> : L'opérateur de comparaison (contrairement à l'opérateur =) renvoie vrai lorsque les deux valeurs comparées sont NULL.
Les opérations de comparaison conditionnelle sur NULL sont spéciales.Vous ne pouvez pas utiliser = NULL ou ! =NULL trouve les valeurs NULL dans la colonne.
Dans MySQL, la comparaison d'une valeur NULL avec n'importe quelle autre valeur (même NULL) renvoie toujours false, c'est-à-dire que NULL = NULL renvoie false.
NULL est géré dans MySQL à l'aide des opérateurs IS NULL et IS NOT NULL.
Utiliser la valeur NULL dans l'invite de commande
Dans l'exemple suivant, la table chenweiliang_test_tbl dans la base de données chenweiliang est définie pour contenir deux colonnes, chenweiliang_author et chenweiliang_count, et les valeurs NULL sont définies pour être insérées dans chenweiliang_count.
Exemple
Essayez les exemples suivants :
Créer une table de données chenweiliang_test_tbl
root @ host #mysql -u root -p password; 输入密码:******* mysql > 使用chenweiliang ; 数据库改变了mysql > create table chenweiliang_test_tbl - > ( - > chenweiliang_author varchar (40 )NOT NULL , - > chenweiliang_count INT - > ); 查询OK ,0 行受影响(0.05 秒)mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' chenweiliang ' ,20 ); mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' 陈沩亮博客' ,NULL ); mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values ( ' Google ' ,NULL ); mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' FK ' ,20 ); mysql > SELECT * from chenweiliang_test_tbl ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | 陈沩亮博客| NULL | | Google | NULL | | FK | 20 | + --------------- + -------------- + 4 行中集合(0.01 秒)
Dans l'exemple suivant, vous pouvez voir = et ! L'opérateur = ne fonctionne pas :
mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count = NULL ; 空集(0.00 秒)mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count != NULL ; 空集(0.01 秒)
Pour vérifier si la colonne `chenweiliang_test_tbl` d'une table de données est NULL, vous devez utiliser `IS NULL` et `IS NOT NULL` , comme indiqué dans l'exemple suivant :
mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count IS NULL ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | 陈沩亮博客| NULL | | Google | NULL | + --------------- + -------------- + 2 行中的组(0.01 秒)的MySQL > SELECT * 从chenweiliang_test_tbl WHERE chenweiliang_count IS NOT 空值 ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | FK | 20 | + --------------- + -------------- + 2 行中的组(0.01 秒)
Gestion des valeurs NULL avec le script PHP
Dans le script PHP, vous pouvez utiliser l'instruction if...else pour déterminer si la variable est vide et générer une instruction conditionnelle correspondante.
Dans l'exemple suivant, PHP définit la variable $chenweiliang_count puis utilise cette variable pour comparer avec le champ chenweiliang_count dans la table de données :
Test ORDRE PAR MySQL :
<?
php $ dbhost = ' localhost:3306 ' ; // mysql服务器主机地址
$ dbuser = ' root ' ; // mysql用户名
$ dbpass = ' 123456 ' ; // mysql用户名密码
$ conn = mysqli_connect ($ dbhost ,$ dbuser ,$ dbpass );
如果(!$ conn ){ die (' 连接失败:' 。mysqli_error ($ conn ));
} // 设置编码,防止中文乱码
mysqli_query ($ conn ,“ set names utf8 ” );
if (isset ($ chenweiliang_count )){ $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count = $ chenweiliang_count ” ;
} else { $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count IS NULL ” ;
} mysqli_select_db ($ conn ,'
chenweiliang ' );
$ retval = mysqli_query ($ conn ,$ sql );
if (!$ retval ){ die (' 无法读取数据:' 。mysqli_error ($ conn ));
} echo ' <h2>陈沩亮博客IS NULL测试<h2> ' ;
echo ' <table border =“1”> <tr> <td>作者</ td> <td>登陆次数</ td> </ tr> ' ;
$ retval ,MYSQL_ASSOC )){ echo “ <tr> ” 。
“ <td> {$ row ['chenweiliang_author']} </ td> ” 。
“ <td> {$ row ['chenweiliang_count']} </ td> ” 。
“ </ tr> ” ;
} echo ' </ table> ' ;
mysqli_close ($ conn );
?>
J'espère que l'article « Comment gérer les requêtes avec des valeurs non nulles dans une base de données MySQL ? Instruction SELECT IS NOT NULL de MySQL » publié sur le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) vous sera utile.
N'hésitez pas à partager le lien de cet article : https://www.chenweiliang.com/cwl-491.html
