我们已经知道 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. [bzoj3378][Usaco2004 Open]MooFest 狂欢节_树状数组

    MooFest 狂欢节 bzoj-3378 Usaco-2004 Open 题目大意:给定一个n个数的a序列,每两个数之间有一个距离,两个点之间的权值为$max(a[i],a[j])*dis(i,j) ...

  2. Javascript中JSON的序列化和反序列化(转)

    parse用于从一个字符串中解析出JSON对象,如: var str = '{"name":"easonjim","age":"2 ...

  3. sql server使用杂记

    SqlServer导出数据库 navcat for sql server中打开连接,打开数据库,右键--数据传输,常规选项卡--模式选择dbo,目标选择连接(选择你新建的库)或者文件(导出你要的sql ...

  4. 查看TEMP 表空间usage

    SELECT S.sid || ','|| S.serial# sid_serial, S.username, S.osuser, P.spid, S.module, P.program, SUM ( ...

  5. web项目log日志查看分析->流程理解

    1.DEBUG [2017-07-10 11:38:41,705][] org.springframework.web.servlet.DispatcherServlet:865 - Dispatch ...

  6. Android:解决cannot find zipalign的问题

    如果当前使用的Android SDK是v20的话,在通过Eclipse或者Intellij IDEA打包Android项目时,会出现一个”cannot find zipalign”的错误. 这个错误的 ...

  7. 【Linux学习】Ubuntu下 sambaserver搭建

    1.安装samba,smbfs 2.配置smb.conf文件 配置文件之前须要先备份一下须要配置的文件(养成好的习惯) 输入命令: 进入到smb.conf文件里,在文件的最后加入下列语句 保存后.退出 ...

  8. Linux -- 内存控制之oom killer机制及代码分析

    近期,线上一些内存占用比較敏感的应用.在訪问峰值的时候,偶尔会被kill掉,导致服务重新启动.发现是Linux的out-of-memory kiiler的机制触发的. http://linux-mm. ...

  9. DockPanelSuite中的DocumentStyle

    首先明确一个概念Mdi的完整词组:Multiple document interface namespace WeifenLuo.WinFormsUI.Docking { public enum Do ...

  10. C#上移,下移TreeView中的树节点顺序

    C#上移,下移TreeView中的树节点顺序 2009-08-12 20:10 1494人阅读 评论(2) 收藏 举报 c#buttonobjectnullstring C#中,通过单击上移,下移按钮 ...