让我们假设下表(例如,几个内部连接语句的结果):

id | column_1 | column_2
------------------------
 1 |  1       | 
 2 |  2       | 2
 3 |          | 3

例如,您可以从以下语句中获得:

select a.id, t1.column_1, t2.column_2
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id

现在,如果我想总结一下t1.第1列和第2列.第2栏如下

select 
    a.id, 
    t1.column_1, 
    t2.column_2,
    (t1.column_1 + t2.column_2) as cumulated
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id

reslut将如下所示:

id | column_1 | column_2 | cumulated
------------------------------------
 1 |  1       | NULL     | NULL
 2 |  2       | 2        | 4
 3 |  NULL    | 3        | NULL

我的问题基本上是:有没有一种方法可以将NULL类型转换为0来做一些计算?

我试过CONVERT(t1.column_1, SIGNED)CAST(t1.column_1 as SIGNED),但NULL还是NULL.

推荐答案

使用IFNULL(column, 0)将列值转换为零.

或者,COALESCE函数将执行相同的操作:COALESCE(column, 0),除了

  1. COALESCE符合ANSI标准,IFNULL不符合ANSI标准
  2. COALESCE接受任意数量的列/值,并将返回传递给它的第一个非空值.

Mysql相关问答推荐

正则表达式转换为MYSQL格式

了解MySQL_stmt_BIND_NAMED_Param()-MySQL C API

如何为Oracle DB查询获得所需的GROUP BY结果?

查询具有JSON对象数组的列时,JSON_CONTAINS的MySQL语法错误

按唯一列排序,但保持匹配的列在一起

如何分解分组依据的数据?

如何获取每日登录用户数?

在 MySQL 中跨日期和位置计算和排序实体的共现

mySql 查询运行速度超慢

在 SQL 中 for each 组返回具有最大值的行,包括具有相同值的行

MYSQL:如何根据之前的相关记录获取记录

使用另一个表中的值更新一个表中的值

在分组结果 MySQL 5.7 版中获取最多的重复值

在 SQL 中将列添加为 End_date,间隔为 +100 天

插入重复键查询以在每一行上进行自定义更新

如何使用nodejs从mysql数据库中获取最新的10条记录?

如何在sql中挑出某些名称

MySQL - 如何 Select 值在数组中的行?

在 MySQL 中存储 IPv6 地址

mysql错误'TYPE = MyISAM'