- 浏览: 250316 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (192)
- 技术研究学习 (19)
- 工作总结 (4)
- spring3.x (11)
- mail (2)
- jar (2)
- FCKeditor (1)
- quartz (2)
- json (1)
- jdbc (5)
- struts2 (6)
- java基础 (18)
- jboss (3)
- IT名称解析 (1)
- 测试工具 (2)
- 工作趣谈 (1)
- 数据库 (8)
- js (8)
- jquery (1)
- mysql (20)
- Sql (3)
- Oracle (1)
- easyui (0)
- log4j (1)
- 源码研究 (1)
- Jasper Report (0)
- Jbpm4 (4)
- xml (1)
- ireport (0)
- javavm (1)
- sitemesh (5)
- compass (1)
- jvm (1)
- ext (1)
- lucene (0)
- cxf (1)
- Blazeds (0)
- Resteasy (1)
- jaxb (1)
- tomcat (1)
- Rmi (1)
- BoneCP (1)
- velocity (3)
- OSCache (1)
- EHCache (1)
- 高性能开发 (9)
- 设计模式 (0)
- 网络协议应用 (1)
- Ibatis (1)
- powerdesigner (1)
- 架构师之路 (2)
- memcached (4)
- MapReduce (1)
- 测试组 (1)
- 图像处理 (2)
- LoadRunner (2)
- 报表 (1)
- 负载均衡 (1)
- 分布式 (3)
- c# (1)
- java中一些特殊问题 (3)
- java 8 (1)
- Mogodb (1)
- 项目设计与实现 (2)
- Ubuntu (1)
- eclipse (1)
- gradle (1)
- 私有云 (1)
- redis (1)
- 移动前端 (1)
最新评论
MySQL查询是我们经常会用到的操作,下面将为您分析MySQL查询中的非空问题,希望对您学习MySQL查询方面能够有些许的帮助。 表的订单状态字段设计为varchar类型,有以下值:NULL,pending,pending refund,refund,cancel.我们知道查询状态为cancel的订单,SQL语句可以这样写: SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status = 'cancel' SQL语句能查询出正确的数据,但是当我们想查询状态为非cancel的订单时,可能会出麻烦, 因为status字段没有设置NOT NULL,所以大部分订单的status值都是NULL,这样的话,用'<>'查询出来的数据不正确,只有status除了cancel之外 的非空数据查询出来了,而为NULL的没有查询出来。SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status <> 'cancel'原 因:NULL值操作 NULL值可能令人感 到奇怪直到你习惯它。概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。为了测试NULL,你不能使用算术比较 操作符例如=、<或!=。为了说明它,试试下列查询: mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL; +----------+-----------+----------+----------+ | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL | +----------+-----------+----------+----------+ | NULL | NULL | NULL | NULL | +----------+-----------+----------+----------+ 很 显然你不能通过这些比较得到有意义的结果。相反使用IS NULL和IS NOT NULL操作符: mysql> SELECT 1 IS NULL, 1 IS NOT NULL; +-----------+---------------+ | 1 IS NULL | 1 IS NOT NULL | +-----------+---------------+ | 0 | 1 | +-----------+---------------+ 请注意在MySQL中,0或 NULL意味着假而其它值意味着真。布尔运算的默认真值是1。根据以上的NULL值操作结果,最终使用此种方式解决:SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE IFNULL(o.status,'pending') <> 'cancel'学习:IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使 用的上下文环境。 mysql> select IFNULL(1,0); ->1 mysql> select IFNULL(0,10); ->0 mysql> select IFNULL(1/0,10); ->10.0000 mysql> select IFNULL(1/0,'yes'); ->'yes'IF(expr1,expr2,expr3) 如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回 expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。 mysql> select IF(1>2,2,3); -> 3 mysql> select IF(1<2,'yes','no'); -> 'yes' mysql> select IF(strcmp('test','test1'),'yes','no'); -> 'no' expr1作为整数值被计算,它意味着如 果你正在测试浮点或字符串值,你应该使用一个比较操作来做。 mysql> select IF(0.1,1,0); -> 0 mysql> select IF(0.1<>0,1,0); -> 1 在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换 到整数值, 导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。 CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END 第一个版本返回 result,其中value=compare-value。第二个版本中如果第一个条件为真,返回result。如果没有匹配的result值,那么结 果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。 mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END; -> "one" mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; -> "true" mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END; -> NULL
发表评论
-
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
2013-08-26 13:12 956来源:http://www.cnblogs.com/luckc ... -
日志回滚,mysql优化
2012-09-25 13:40 1958原创作品,允许转载,转载时请务必以超链接形式标明文章 原始 ... -
MySQL 自增字段为何出错
2012-09-25 13:39 1227来源:http://www.zioer.com/mysql-自 ... -
mysql 执行顺序 SQL语句执行顺序分析
2012-09-21 16:48 9511来源:http://blog.sina.com.c ... -
Mysql字符串截取函数SUBSTRING的用法说明
2012-09-24 09:52 955来源:http://www.jb51.net/article/ ... -
Mysql点滴-CAST/CONVERT 类型转换函数
2012-09-20 11:19 910CAST() 和CONVERT() 函数可用来获取一个 ... -
mysql字符串向整型转换
2012-09-20 11:19 1140mysql字符串向整型转换 SELECT MAX(C ... -
mysql as 别名与 join 多表连接语法
2012-09-20 11:19 2398在MySQL中,使用AS关键字为字段、表、视图取别名,或者 ... -
理解MySQL——复制(Replication)
2012-09-24 09:52 859来源:http://www.cnblogs.com/hustc ... -
mysql中的begin-end流程控制语句与局部变量
2012-09-24 09:53 3732来源:http://blog.sina.com.c ... -
MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
2012-09-24 09:52 1095MySQL中涉及的几个字符集 character- ... -
MySql 申明变量以及赋值
2012-09-25 13:40 810sql server中变量要先申明后赋值: 局部变 ... -
mysql变量使用总结
2012-09-21 16:53 878来源:http://www.cnblogs.com ... -
Mysql中文乱码问题完美解决方案
2012-09-18 14:47 634MySQL会出现中文乱码的原因不外乎下列几点: 1.se ... -
MySQL中快速插入大数据量和语句优化的相关技巧
2012-09-18 14:00 1055来源:http://it.100xuexi.com/view/ ... -
mysql中利用insert对自增字段进行插值
2012-09-18 11:34 1633[color=blue][/color]INSERT和REPL ... -
mysql获取插入、添加记录的自动编号
2012-09-18 11:14 1579[color=indigo][/color]如何获取某个表中的 ... -
MYSQL中如何设置列默认值的介绍(时间)
2012-09-17 10:56 998来源:http://tech.it168.com/o/2006 ... -
mysql添加注释
2012-09-17 10:14 826mysql允许在sql 代码中使用注释。这对于说明存放在文件中 ...
相关推荐
在MySQL数据库中,查询空字段或非空字段是常见的操作,尤其在处理包含NULL值的数据时。NULL值在SQL中代表未知或者未定义,它与空字符串或零值有着本质的区别。本文将深入探讨如何使用`IS NULL`和`IS NOT NULL`条件来...
在上面的示例中,name 字段被设置为非空约束,即该字段的值不能为空。 修改表时设置非空约束 如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。例如,修改 tb_dept4 表,使得部门...
本文档主要介绍了MySQL数据库的基本概念、数据类型、SQL语言、约束条件、查询语言、聚合函数、子查询和多表查询等知识点。 数据库基础概念 在介绍MySQL数据库之前,首先需要了解数据库的基本概念。数据库是一个...
### MySQL单表查询练习知识点详解 #### 1. 查看EMP表中部门号为5的员工的姓名,职位,参加工作...以上就是针对MySQL单表查询练习题中的知识点详细解释。通过这些练习题,你可以更好地掌握MySQL查询的基础语法和技巧。
4. 如果参数非空,使用JDBC连接MySQL数据库,执行查询操作。 5. 处理查询结果,可能包括遍历`ResultSet`对象(`ResultSet rs = stmt.executeQuery(sql);`),获取元数据(`ResultSetMetaData rsmd = rs.getMetaData...
### MySQL 常用查询语句详解 ...以上介绍了MySQL中常用的23种查询语句,涵盖了数值型、字符串、日期型等多种数据类型的查询方法以及各种复杂的查询需求。通过这些查询语句,开发者可以更高效地管理数据库中的数据。
在这个"MySQL数据库应用形考实验1-4全答案.zip"压缩包中,包含了四个关于MySQL基础操作的实验训练,涵盖了从数据库和表的创建,到数据的查询、增删改,以及数据库系统的维护等关键知识点。以下是对这些实验的详细...
手册中首先提到了Linux平台下的MySQL安装方法,包括Ubuntu和CentOS两种主流Linux发行版的安装命令,并提到了配置文件目录的所在位置。接着,手册详细介绍了密码的修改过程,以及登录MySQL服务器的方法,强调了在...
8. 中文乱码解决:在使用MySQL时,经常会遇到中文乱码的问题。解决方法是在建立数据库或表时指定字符集为utf8,并在连接数据库时确保客户端的字符集设置正确。 9. IP连接控制:可以为MySQL用户设置只能从特定的IP...
MySQL中的SQL主要包括数据查询、数据插入、数据更新和数据删除等操作。学会编写SELECT语句来获取所需信息,INSERT语句来添加新记录,UPDATE语句来修改现有数据,以及DELETE语句来删除不再需要的记录,是MySQL学习的...
### MySQL基础知识及高级查询技巧详解 #### 一、MySQL简介 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),以其高性能、稳定性和易用性著称。它支持SQL(Structured Query Language,结构化查询语言),...
MySQL是一种开源、免费的关系型数据库管理系统,广泛应用于Web应用中。在登录注册系统中,MySQL将存储用户的账户信息,如用户名、密码等。创建一个包含用户表的数据库是实现这一功能的第一步。 三、连接MySQL 1. ...
5. 索引:索引是提高查询速度的关键,MySQL支持B树索引、哈希索引等,常见的有主键索引(唯一且非空)、唯一索引(唯一但可为空)和普通索引。 6. 存储引擎:MySQL支持不同的存储引擎,如InnoDB(默认,支持事务...
在MySQL中,数据存储在表格中,表格之间可以建立关联,形成复杂的数据库结构。MySQL支持多种数据类型,如整数、浮点数、字符串、日期和时间等,可以根据实际需求选择合适的数据类型存储数据。 接下来,我们关注的是...
在本文中,我们将深入探讨如何使用C++ Builder与MySQL数据库进行交互,实现一系列数据库操作功能。MySQL是一款流行的开源关系型数据库管理系统,而C++ Builder则是一个强大的开发环境,支持多种数据库连接,包括...
子查询允许在一个查询中嵌套另一个查询,是解决复杂查询问题的有效工具。通过练习,掌握如何使用子查询来过滤结果、比较值或计算结果。 7. **存储过程和函数** MySQL中的存储过程和函数可以封装复杂的操作,提高...
* MySQL 非空约束 * MySQL 查看表中的约束 * MySQL 常用运算符 * MySQL 算术运算符 * MySQL 逻辑运算符 * MySQL 比较运算符 * MySQL 位运算符 * MySQL 运算符优先级 * MySQL IN 和 NOT IN * MySQL 函数简介
在本次教程中,我们会涵盖如何使用MySQL Workbench进行基本的数据库操作、创建ER模型、管理数据库连接以及如何使用其SQL编辑器。由于文档部分文字经过OCR扫描后存在识别错误或遗漏,我们将根据提供的内容进行逻辑上...
索引是提升查询速度的关键,可以使用主键(唯一且非空的索引)和唯一索引来确保数据的唯一性。普通索引则提供快速访问数据的途径。视图可以理解为虚拟表,基于一个或多个表的查询结果,方便复杂查询和数据保护。存储...