MySQL:将 NULL 类型转换为 0

MySQL: Typecasting NULL to 0(MySQL:将 NULL 类型转换为 0)
本文介绍了MySQL:将 NULL 类型转换为 0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Let us suppose the following table (e.g. a result of several inner join statements):

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

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

Which you could for example get from the following statement:

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.column_1 和 t2.column_2 如下

Now, if i'd like to sum up t1.column_1 and t2.column_2 as follows

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

结果如下:

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

我的问题基本上是:有没有办法将 NULL 类型转换为 0 以进行一些数学运算?

My question basically is: is there a way to typecast NULL into 0 in order to do some math?

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

I have tried CONVERT(t1.column_1, SIGNED) and CAST(t1.column_1 as SIGNED), but a NULL stays a NULL.

推荐答案

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

Use IFNULL(column, 0) to convert the column value to zero.

或者,COALESCE 函数会做同样的事情:COALESCE(column, 0),除了

Alternatively, the COALESCE function will do the same thing: COALESCE(column, 0), except

  1. COALESCE 符合 ANSI,IFNULL 不是
  2. COALESCE 接受任意数量的列/值,并将返回传递给它的第一个非空值.
  1. COALESCE is ANSI-compliant, IFNULL is not
  2. COALESCE takes an arbitrary number of columns/values and will return the first non-null value passed to it.

这篇关于MySQL:将 NULL 类型转换为 0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)