`
cakin24
  • 浏览: 1333336 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

MySQL NULL 值处理

阅读更多

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

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

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

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

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

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


在命令提示符中使用 NULL 值

以下实例中假设数据库 RUNOOB 中的表 tcount_tbl 含有两列 runoob_author 和 runoob_count, runoob_count 中设置插入NULL值。

尝试以下实例:

MariaDB [RUNOOB]> select * from tcount_tbl;
+---------------+--------------+
| runoob_author | runoob_count |
+---------------+--------------+
| mahran        |           20 |
| mahran        |         NULL |
| Jen           |         NULL |
| Gill          |           20 |
| John Poul     |            1 |
| Sanjay        |            1 |
+---------------+--------------+
6 rows in set (0.00 sec)

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

MariaDB [RUNOOB]> SELECT * FROM tcount_tbl WHERE runoob_count = NULL;
Empty set (0.00 sec)

MariaDB [RUNOOB]> SELECT * FROM tcount_tbl WHERE runoob_count != NULL;
Empty set (0.00 sec)

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

MariaDB [RUNOOB]> SELECT * FROM tcount_tbl where runoob_count IS NULL;
+---------------+--------------+
| runoob_author | runoob_count |
+---------------+--------------+
| mahran        |         NULL |
| Jen           |         NULL |
+---------------+--------------+
2 rows in set (0.00 sec)

MariaDB [RUNOOB]> SELECT * FROM tcount_tbl where runoob_count IS NOT NULL;
+---------------+--------------+
| runoob_author | runoob_count |
+---------------+--------------+
| mahran        |           20 |
| Gill          |           20 |
| John Poul     |            1 |
| Sanjay        |            1 |
+---------------+--------------+
4 rows in set (0.00 sec)

使用PHP脚本处理 NULL 值

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

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

  1. <?php
  2. $dbhost ='localhost:3036';
  3. $dbuser ='root';
  4. $dbpass ='rootpassword';
  5. $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  6. if(! $conn )
  7. {
  8. die('Could not connect: '. mysql_error());
  9. }
  10. if( isset($runoob_count ))
  11. {
  12. $sql ='SELECT runoob_author, runoob_count
  13. FROM tcount_tbl
  14. WHERE runoob_count IS NOT NULL';
  15. }
  16. else
  17. {
  18. $sql ='SELECT runoob_author, runoob_count
  19. FROM tcount_tbl
  20. WHERE runoob_count IS NULL';
  21. }
  22. mysql_select_db('RUNOOB');
  23. $retval = mysql_query( $sql, $conn );
  24. if(! $retval )
  25. {
  26. die('Could not get data: '. mysql_error());
  27. }
  28. while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
  29. {
  30. echo "Author:{$row['runoob_author']} <br> ".
  31. "Count: {$row['runoob_count']} <br> ".
  32. "--------------------------------<br>";
  33. }
  34. echo "Fetched data successfully\n";
  35. mysql_close($conn);
  36. ?>
 
运行结果:

 
  • 大小: 30.5 KB
2
0
分享到:
评论

相关推荐

    MySQL NULL 值处理实例详解

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

    2023年,MySQL最新最详细的教程资源 详细讲解了MySQL的各种用法

    MySQL NULL 值处理 MySQL 正则表达式 MySQL 事务 MySQL ALTER命令 MySQL 索引 MySQL 临时表 MySQL 复制表 MySQL 元数据 MySQL 序列使用 MySQL 处理重复数据 MySQL 及 SQL 注入 MySQL 导出数据 MySQL 导入数据 MySQL ...

    MySQL 教程 开发文档 从基础到精通

    MySQL NULL 值处理 二十二. MySQL 正则表达式 二十三. MySQL 事务 二十四.MySQL ALTER命令 二十五. MySQL 索引 二十六. MySQL 临时表 二十七. MySQL 复制表 二十八. MySQL 元数据 二十九. MySQL 序列使用 三十. ...

    Mysql实现null值排在最前/最后的方法示例

    为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true。 IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。 &lt;=&gt;: 比较操作符(不同于=运算符),当比较的的两个值为 NULL ...

    详解MySQL中的NULL值

    为了处理这种情况,MySQL提供了三大运算符 IS NULL: 此运算符返回true,当列的值是NULL。 IS NOT NULL: 运算符返回true,当列的值不是NULL。 &lt;=&gt; 操作符比较值(不同于=运算符)为ture,即使两个NULL值 涉及...

    datax抽取数据到hdfs的null值变成''(引号)的问题

    mysql的null值通过datax抽取到hdfs,会变成引号,这不是我们所需要的,所以需要修改一下datax的源码

    mysql中is null语句的用法分享

    执行order by时,如果运行 order by … asc,则null值出现在最前面,若运行order by … desc,则null值出现在最后面。 null操作的常见错误是不能在定义为not null的列内插入0或空字符串,但事实并非如此。在null表示...

    MYSQL

    6.14 怎样使MySQL安全以对抗解密高手(cracker) 7 MySQL 语言参考 7.1 文字:怎样写字符串和数字 7.1.1 字符串 7.1.2 数字 7.1.3 十六进制值 7.1.4 NULL值 7.1.5 数据库,表,索引,...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 7_MySQL字表分区和NULL值特殊处理.mp4 │ 8_MySQL表分区管理.mp4 │ 作业.docx │ 作业及答案.docx │ ├─新版MySQL DBA综合实战班 第09天 │ 1_课堂作业讲解.mp4 │ 2_MySQL复制原理.mp4 │ 3_MySQL传统复制...

    MySQL中文参考手册.chm

    8.4.4.4 排序行 8.4.4.5 日期计算 8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 以批处理模式使用mysql ...

    MySql 5.1 参考手册.chm

    9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 ...

    MySQL 5.1中文手冊

    9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 ...

    小心陷阱!MySQL中处理Null时需注意两点

    MySQL数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。 陷阱一:空值不一定为空 空值是一个比较特殊的字段。在MySQL数据库中,在不同...

    MySQL中文参考手册

    + 7.1.4 NULL值 + 7.1.5 数据库,表,索引,列和别名的命名 # 7.1.5.1 名字的大小写敏感性 o 7.2 用户变量 o 7.3 列类型 + 7.3.1 列类型的存储要求 + 7.3.5 数字类型 + 7.3.6 日期和时间类型 # 7.3.6.1 ...

    MySQL 5.1参考手册

    9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集...

    mysql入门.md

    1、以上五个分组函数都忽略null值,除了count(*) 2、sum和avg一般用于处理数值型 max、min、count可以处理任何数据类型 3、都可以搭配distinct使用,用于统计去重后的结果 4、count的参数可以支持: 字段、*...

    MySQL 5.1官方简体中文参考手册

    9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 ...

    oracle使用order by排序null值如何处理

    适用情况: oracle 对查询结果进行排序时,被排序的栏位存在null值,且要指定NULL值排在最前面或者最后面 关键字:Nulls First;Nulls Last 默认情况:null 默认为最大值(即:asc 升序&lt;小–&gt;大&gt;,null值排在最后...

Global site tag (gtag.js) - Google Analytics