我们已经知道 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 = '';         

// 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教程:阿里云大学——开发者课堂

MySQL NULL 值如何处理?的更多相关文章

  1. MySQL NULL 值处理

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

  2. 二十一、MySQL NULL 值处理

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

  3. DB-MySQL:MySQL NULL 值处理

    ylbtech-DB-MySQL:MySQL NULL 值处理 1.返回顶部 1. MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数 ...

  4. mysql null值处理详细说明

    在讲null之前,我们先看一个例子 表数据如下: 3306>select * from t1; +------+-------+ | id | name | +------+-------+ | ...

  5. MySQL NULL值

    我们已经看到SQL SELECT命令和WHERE子句一起使用,来从MySQL表中提取数据, 但是,当我们试图给出一个条件,比较字段或列值设置为NULL,它确不能正常工作. 为了处理这种情况,MySQL ...

  6. Oracle 与 Mysql NULL值,空字符串''的区别

    Oracle(null等同于空字符'') 1.oracle插入空字符串默认替换成null 2.oracle查询(null和被替换的空字符)时使用 is null/is not null 3.使用聚合函 ...

  7. 【mysql】mysql null值

    在数据表我们有时候有些表字段会为null,表示空.其实在mysql中null值是占用空间的. mysql手册如下解释 NULL columns require additional space in ...

  8. MYSQL NULL值特性

    NULL是一种“没有类型”的值,通常表示“无值”,“未知值”,“缺失值”,“超界”,“不在其中”等,我们在日常运用中很容易和NULL字符串混淆,这里大致整理了下NULL值的一些特性,以便能够正确使用N ...

  9. mysql null 值查询问题

    我在开发公司内部的一个项目时遇到一个问题:select student_quality_id from STUDENT_QUALITY where mark_status=0 and batch_st ...

随机推荐

  1. MapReduce Shuffle优化方向

    Shuffle过程介绍可以查看该博客:http://langyu.iteye.com/blog/992916 优化方向: 压缩:对数据进行压缩,减少写读数据量: 减少不必要的排序:并不是所有类型的Re ...

  2. CentOS 6.5下mysql的安装与配置

    一.通过yum自动安装mysql yum install mysql-server my-client 二.初始化及相关配置 安装完mysql数据库以后,会发现会多出一个mysqld的服务,通过输入  ...

  3. Spring MVC-视图解析器(View Resolverr)-多重解析器(Multiple Resolver)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_multiple_resolver_mapping.htm 说明:示例基于Spri ...

  4. java读取中文分词工具(一)

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  5. 【特征匹配】SIFT原理之KD树+BBF算法解析

    转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/47606159 继上一篇中已经介绍了SIFT原理与C源代码剖析,最后得到了一系列 ...

  6. 如何更改iTunes备份地址(修改iphone ipad 备份地址) itunes文件目录修改方法 【亲测有效,附带原理说明】

    前言 C盘空间有限,但是iTunes就是那么龌龊,只能把手机备份存到C盘.那么怎么才能把备份文件存到其他分区的文件夹里面呢? 当时我想先看看度娘,看看有没有现成的! 结果 nnd!! 我看了一大堆相关 ...

  7. HTTP服务端JSON服务端

    HTTP服务端JSON服务端 最后更新日期:  2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易 ...

  8. .Net-ASP.NET Web API:目录

    ylbtech-.Net-ASP.NET Web API:目录 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. https://www.asp.net/we ...

  9. Error-MySQL:2005 - Unknown MySQL server host 'localhost'(0)

    ylbtech-Error-MySQL:2005 - Unknown MySQL server host 'localhost'(0) 1.返回顶部 1. 今天在外面开navicat for mysq ...

  10. 杂项:UML

    ylbtech-杂项:UML Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言 ...