MySQL中将查询出来的值null转为0的方法 您所在的位置:网站首页 accesssql语句如何让一个字段的空值替换为0 MySQL中将查询出来的值null转为0的方法

MySQL中将查询出来的值null转为0的方法

2024-07-11 08:56| 来源: 网络整理| 查看: 265

1.IFNULL()方法

一般我们在使用ifnull()方法的时候,都是类似下面的语句:

IFNULL(expr1,expr2)

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值

select ifnull(name,'no name') from person;

但是,有几种情况,使用ifnull()方法无法将null转换成0。这时,我们可以转换一下思路。

当出现多表查询的时候,我们可以使用left join 等表连接的方法解决将null转换成0的问题。

当使用group by的情况下,使用ifnull也是不可以的,因为这个时候是返回的集合为空,ifnull无法处理,这个时候可以将数据再包一层的方法进行处理,如下:

select COUNT(*) from (select *  from user_operator  where  type=400 )  as a

from里面包裹的是要进行计算的查询,然后在外面在执行一次count即可。

2.COALESCE函数

COALESCE函数从值列表中返回第一个非NULL的值,当遇到NULL值时将其替换为0。 coalesce(str1,str2....);

       需要在表中查出所有比'WARD'提成(COMM)低的员工,提成为NULL的员工也包括在内。 (个人意见,如果数据库提成字段默认值不是为0值的话肯定是开发那个的错)。

select ename,comm from emp where coalesce(comm,0) < (select comm from emp whrer ename ="WARD");

结果:

+--------+------+ | ename  | comm | +--------+------+ | SMITH  | NULL | | ALLEN  |  300 | | JONES  | NULL | | BLAKE  | NULL | | CLARK  | NULL | | SCOTT  | NULL | | KING   | NULL | | TURNER |    0 | | JAMES  | NULL | | MILLER | NULL | | ADAMS  | NULL | | FORD   | NULL | +--------+------+ 12 rows in set

 

返回非NULL值:

select ename, comm,coalesce(comm,0) from emp where coalesce(comm,0) < (select comm from emp where ename = 'WARD'); +--------+------+------------------+ | ename  | comm | coalesce(comm,0) | +--------+------+------------------+ | SMITH  | NULL |                0 | | ALLEN  |  300 |              300 | | JONES  | NULL |                0 | | BLAKE  | NULL |                0 | | CLARK  | NULL |                0 | | SCOTT  | NULL |                0 | | KING   | NULL |                0 | | TURNER |    0 |                0 | | JAMES  | NULL |                0 | | MILLER | NULL |                0 | | ADAMS  | NULL |                0 | | FORD   | NULL |                0 | +--------+------+------------------+ 12 rows in set

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有