对mysql表中的两列或多列求和,但省略null字段

对mysql表中的两列或多列求和,但省略null字段,mysql,sql,database,Mysql,Sql,Database,如何对两列或三列求和,但如果任何列为NULL,则不应影响sum的值。 如果将所有列添加到一起,则返回NULL 下面是我正在尝试处理的表的示例 id col1 col2 col3 total 1 2 3 5 2 10 5 NULL 3 2 NULL NULL 这就是我尝试的问题 SELECT id,col1,col2,col3, (col1+col2+col3) AS Total FROM test_table; 若并没有空列

如何对两列或三列求和,但如果任何列为NULL,则不应影响sum的值。 如果将所有列添加到一起,则返回NULL

下面是我正在尝试处理的表的示例

id   col1 col2   col3  total
1     2     3    5
2     10    5    NULL
3     2     NULL NULL
这就是我尝试的问题

SELECT id,col1,col2,col3, (col1+col2+col3) AS Total FROM test_table;
若并没有空列,这个查询可以很好地工作,但若有空列,那个么添加了空的数字就变成了空,结果是空的

下面是我添加的结果屏幕截图

在上图中,若sum中的任何一列都有NULL,那个么我在Total列中得到NULL。
但结果应该类似于10,15,2,与id有关。

修改select语句以排除空值。

一种方法是使用函数:

SELECT id,col1,col2,col3, (IFNULL(col1,0)+IFNULL(col2,0)+IFNULL(col3,0)) AS Total
FROM test_table;

使用合并将空值替换为0。我更喜欢
合并
。根据我的经验,它与数据库无关,其中as
isnull
ifnull
nvl
等都是特定于数据库的

SELECT col1,col2,col3, (coalesce(col1,0)+ coalesce(col2,0)+ coalesce(col3,0)) as total from test_table;

在这种情况下,您需要使用IsNull(列,0)来确保它始终至少为0


按id从测试表组中选择col1、col2、col3、sum(isnull(col1,0)+isnull(col2,0)+isnull(col3,0))作为总计

合并每一列,谢谢。事实上,今天的采访中有人问我这个问题,我当然回答不了。。我试图在互联网上找到答案,但我想我没有用正确的词来搜索,这就是为什么我发布了这个问题。谢谢,成功了。