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

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 LOAD DATA INFILE 语句适用于工作台,但不适用于 python

用两个新列制作表格,按偶数或奇数对另一列进行分类,并将一个类别中的所有偶数和奇数相加

使用 ON DUPLICATE KEY 将列增加一定数量 MySQL NodeJS

估计行数 SQL

sql sum - 处理连接表中的脏重复项

此插页中的“X”是什么> X'3C2F756C3E'

查询以查找可用时隙

Docker(Apple Silicon/M1 Preview)MySQL“ list 列表条目中没有与 linux/arm64/v8 匹配的 list ”

Spring Boot:Jdbc javax.net.ssl.SSLException:在接收对等方的 close_notify 之前关闭入站

如何在 MySQL 数据库中存储表情符号字符

是否可以在 macOS 上只安装 mysqldump

您的密码不符合当前政策要求

在 MySQL 中存储 UUID v4

错误 1698 (28000): 拒绝用户 'root'@'localhost' 的访问

#1273 – 未知排序规则:‘utf8mb4_unicode_520_ci’

无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码

如何在 localhost (xampp) 中打开/关闭 MySQL 严格模式?

使用 mysql 处理非常大的数据

AWS:无法从我的机器连接到 RDS 数据库