MySQL NULL 值处理

收藏807

阅读131855

更新时间2022-04-15

MySQL NULL 值处理

我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

  • IS NULL: 当列的值是 NULL,此运算符返回 true。

  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

  • <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

注意:

select * , columnName1+ifnull(columnName2,0) from tableName;

columnName1,columnName2 为 int 型,当 columnName2 中,有值为 null 时,columnName1+columnName2=null, ifnull(columnName2,0) 把 columnName2 中 null 值转为 0。

在命令提示符中使用 NULL 值

以下实例中假设数据库 php 中的表 php_test_tbl 含有两列 php_author 和php_count,php_count 中设置插入NULL值。

实例

尝试以下实例:

创建数据表 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)

以下实例中你可以看到 = 和 != 运算符是不起作用的:

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)

查找数据表中 php_test_tbl 列是否为 NULL,必须使用 IS NULL 和 IS NOT NULL,如下实例:

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)

使用 PHP 脚本处理 NULL 值

PHP 脚本中你可以在 if...else 语句来处理变量是否为空,并生成相应的条件语句。

以下实例中 PHP 设置了 $php_count 变量,然后使用该变量与数据表中的 php_count 字段进行比较:


<?php
header("Content-Type: text/html;charset=utf-8");

$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = 'root';          // mysql用户名密码       
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
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
           WHERE php_count IS NULL";
}
mysqli_select_db( $conn, 'php' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>PHP中文网 IS NULL 测试<h2>';
echo '<table border="1"><tr><td>作者</td><td>登陆次数</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);
?>

效果图:

Image 4.jpg

相关视频教程推荐:奇怪的NULL

相关

视频

RELATED VIDEOS

更多

免费

MySQLi面向过程极速入门
中级 MySQLi面向过程极速入门

127669次学习

收藏

免费

MySQLi面向对象编程极速入门

免费

MySQL权威开发指南(教程)

免费

MySQL高级进阶视频教程
高级 MySQL高级进阶视频教程

122147次学习

收藏

免费

肖文吉Oracle视频教程
初级 肖文吉Oracle视频教程

72226次学习

收藏

免费

魔乐科技oracle视频教程
初级 魔乐科技oracle视频教程

54966次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

71万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号