MySQL NULL 值如何处理?

栏目: 数据库 · 发布时间: 6年前

内容简介:我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。为了处理这种情况,MySQL提供了三大运算符:IS NULL: 当列的值是 NULL,此运算符返回 true。

我们已经知道 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 运算符。

在命令提示符中使用 NULL 值

以下实例中假设数据库 aliyun 中的表aliyun_test_tbl 含有两列aliyun_author 和 aliyun_count, aliyun_count 中设置插入NULL值。

实例

尝试以下实例:

创建数据表 runoob_test_tbl

root@host# mysql -u root -p password;Enter password:*******mysql> use OPENKETANG;
Database changedmysql> create table openketang_test_tbl 
-> ( -> openketang_author varchar(40) NOT NULL,
-> openketang_count  INT    -> );
Query OK, 0 rows affected (0.05 sec)mysql> 
INSERT INTO openketang_test_tbl (openketang_author, openketang_count) values ('OPENKETANG', 20);
mysql> INSERT INTO openketang_test_tbl (openketang_author, openketang_count) 
values ('阿里云大学', NULL);
mysql> INSERT INTO openketang_test_tbl (openketang_author, openketang_count) 
values ('Google', NULL);
mysql> INSERT INTO openketang_test_tbl (openketang_author, openketang_count) 
values ('FK', 20);
mysql> SELECT * from openketang_test_tbl; 
    +---------------+--------------+ 
    | openketang_author | openketang_count | 
    +---------------+--------------+ 
    | OPENKETANG        | 20           | 
    | 阿里云大学  | NULL         | 
    | Google        | NULL         | 
    | FK            | 20           | 
    +---------------+--------------+
    4 rows in set (0.01 sec)

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

mysql> SELECT * FROM openketang_test_tbl WHERE openketang_count = NULL;
Empty set (0.00 sec)mysql> SELECT * FROM openketang_test_tbl WHERE openketang_count != NULL;
Empty set (0.01 sec)

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

mysql> SELECT * FROM openketang_test_tbl WHERE openketang_count IS NULL;
 +---------------+--------------+ 
 | openketang_author | openketang_count |
  +---------------+--------------+ 
  | 阿里云大学  | NULL         | 
  | Google        | NULL         | 
  +---------------+--------------+
  2 rows in set (0.01 sec) mysql> SELECT * from openketang_test_tbl WHERE 
  openketang_count IS NOT NULL; 
  +---------------+--------------+ 
  | openketang_author | openketang_count | 
  +---------------+--------------+ 
  | OPENKETANG        | 20           | 
  | FK            | 20           |
   +---------------+--------------+
   2 rows in set (0.01 sec)

使用 PHP 脚本处理 NULL 值

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

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

MySQL ORDER BY 测试:

<?php$dbhost = 'localhost:3306';  
// 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($openketang_count )){ $sql = "SELECT openketang_author, openketang_count 
FROM openketang_test_tbl WHERE openketang_count = $openketang_count";}
else{ $sql = "SELECT openketang_author, openketang_count FROM openketang_test_tbl           
WHERE openketang_count IS NULL";}
mysqli_select_db( $conn, 'OPENKETANG' );
$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>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC)){    echo "<tr>".
"<td>{$row['openketang_author']} </td> ".<td>{$row['openketang_count']} </td> ".
"</tr>";}echo '</table>';mysqli_close($conn);?>

输出结果如下图所示:

MySQL NULL 值如何处理?

全部MySQL教程: 阿里云大学——开发者课堂


以上所述就是小编给大家介绍的《MySQL NULL 值如何处理?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器