我们已经知道 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. 解决maven打包编译出现File encoding has not been set问题

    maven打包编译时后台一直输出警告信息 [WARNING] File encoding has not been set, using platform encoding GBK, i.e. bui ...

  2. MVC.Net:对MVC5部署时出现403.14错误的解决方法

    当我们部署MVC5到IIS 7的时候,有时会出现403.14的错误,如下图: 对于这个错误的解决方法就是在应用程序的web.config的system.webServer节点中加入这一句: <m ...

  3. Unity查找脚本被哪些Perfab或场景引用

    Unity中查找脚本被哪些Prefab或场景引用 Unity中有个Find References In Scene的功能,可是仅仅能查找在当前场景中的引用. 假设发现某个脚本不知道被挂在哪个Prefa ...

  4. 初识ASP.NET---点滴的积累---ASP.NET学习小结

    差点儿相同十多天前学习完了北大青鸟的学习视频,没想到没几天的时间就看完了XML视频和牛腩的Javascript视频.学习完了也该总结总结.理理自己的思路.消化一下自己学习到的东西. 视频中的理论知识并 ...

  5. OpenCV:Visual Studio 2013 Ultimate中OpenCV 2.4.8 配置

    配置环境: 操作系统:Win8.1  64位 IDE平台:Visual Studio 2013 Ultimate 一.准备OpenCV 2.4.8 1.下载:从官网下载 OpenCV2.4.8:   ...

  6. 我对ThreadLocal的理解

    声明:小弟菜狗一个.对ThreadLocal的描写叙述和理解难免有所偏差 近期由于须要深入的了解android的handler消息机制而去查看了Looper的源代码.众所周知在主线程中是不须要在程序猿 ...

  7. alsa 用户空间编程【转】

    本文转载自:http://blog.csdn.net/sjin_1314/article/details/12872581 /**alsa play test *ALSA用户空间编译,ALSA驱动的声 ...

  8. EJB是什么鸟东西?

    到底EJB是什么 到底EJB是什么?被口口相传的神神秘秘的,百度一番,总觉得没有讲清楚的,仍觉得一头雾水.百度了很久,也从网络的文章的只言片语中,渐渐有了头绪. 用通俗话说,EJB就是:"把 ...

  9. Java语言中的程序流程控制

    (1. 流程控制 有三种基本技术可以改变程序的控制流程: A.调用方法 :将导致控制流程离开当前方法,转移到被调用的方法. B.选择  :   a. if / else 语句 b. switch语句 ...

  10. [Apple开发者帐户帮助]二、管理你的团队(3)删除团队成员

    如果您已加入Apple开发者计划,您将在App Store Connect中管理团队成员.有关详细信息,请转到App Store Connect帮助中的添加和编辑用户. 如果您已加入Apple Dev ...