ifnull mysql 所有列_mysql IFNULL IF
假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,refund,cancel.我们知道查询状态为cancel的订单,SQL语句可以这样写:SELECT * FROM qorder WHERE status = 'cancel'SQL语句能查询出正确的数据,但是当我们想查询状态为非cancel的订单时,可能会出麻烦, 因为status字段没 有设置NOT NULL,所以大部分订单的status值都是NULL,这样的话,用'<>'查询出来的数据不正确,只有status除了cancel之外的非空数据查询出来了,而为NULL的没有查询出来。
SELECT * WHERE status <>'cancel' 原 因:NULL值操作NULL值可能令人感到奇怪直到你习惯它。概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。为了测试NULL,你不能使用算术比较 操作符例如=、 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 *qorder WHERE IFNULL(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'
ifnull mysql 所有列_mysql IFNULL IF相关推荐
- ifnull mysql date_mysql中的ifnull函数使用
ifnull 是mysql的一个内置函数 ifnull(expr1,expr2) 如果expr1的值为null,这个时候返回expr2.否则如果expr1的值不是null,就直接返回expr1 下面是 ...
- mysql 添加列_MySQL 数据库如何添加列
当进行 加列操作 时,所有的数据行 都必须要 增加一段数据(图中的 列 4 数据) 如上一期图解所讲,当改变数据行的长度,就需要 重建表空间(图中灰蓝的部分为发生变更的部分) 数据字典中的列定义也会被 ...
- mysql忽略列_mysql – 使用SQL语句更改忽略表添加列(如果不存在)
根据 documentation: IGNORE is a MySQL extension to standard SQL. It controls how ALTER TABLE works if ...
- mysql 添加列_mysql中添加列、修改列、删除列的方法
本节内容: ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 操作语句: 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列 ...
- mysql 临时列_mysql – 在SQL中添加一个临时列,其中值取决于另一列
我有这张桌子: ID | name | result | -------------------- 1 | A | 1 | -------------------- 2 | B | 2 | ----- ...
- mysql 200列_Mysql数据表基本
bit[(M)] 二进制位(101001),m表示二进制位的长度(1-64),默认m=1tinyint[(m)] [unsigned] [zerofill] 小整数,数据类型用于保存一些范围的整数数值 ...
- mysql数据库最多列_mysql多列索引和最左前缀
数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度. 索引优化是数据库优化的最重要手段. 如果查询语句使 ...
- mysql 指定位置添加列_给MySQL表增加指定位置的列_MySQL
ALTER TABLE test ADD COLUMN id INT UNSIGNED NOT NULL auto_increment PRIMARY KEY FIRST 给表添加列是一个常用的操作, ...
- mysql 分组 列转行,mysql列转行以及年月分组_MySQL
bitsCN.com mysql列转行以及年月分组 Java代码 SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(s ...
最新文章
- 利用Proceesson在线绘制流程图实例演练!流程图的要点和注意事项说明
- Preparation for International Women's Day
- java 8中 predicate chain的使用
- C#为什么要用到 try...catch... 呢?
- oledb excel java_C#中Excel 2016的oledb连接字符串
- 钉钉api 获取 accesstoken_Thinkphp5.X异常接管后通过钉钉机器人推送通知
- java mybatis 返回map_mybatis返回map集合的格式是什么?mybatis返回map集合实例
- 2021年内衣品牌营销传播方案-婧麒+美柚.pdf(附下载链接)
- java金蝶云单据查询_如果在单据上查或下查的“单据关联”界面添加功能
- 图像深度:8bit、16bit、24bit、32bit; 16.7M色彩
- 免费可商用图片网站整理
- 实时应用监控平台CAT
- python视频操作——python实现读取和保存视频
- 【计网】DNS解析 DDNS解决动态公网IP访问
- Google VR开发-Cardboard VR SDK反畸变实现
- Android逆向入门6——定位到小红书Sign算法
- FRP (高性能反向代理应用)
- 返回值取vector容器的前n个元素
- 手机网站开发必修课[1]:手机浏览器
- 利好消息!康复肺炎患者抗体血浆有助于拯救危重病人!捐献号召一呼百应