COALESCE(value,…)是一个可变参函数,可以使用多个参数。
接受多个参数,返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用相同。
COALESCE与IFNULL比较
SELECT IFNULL(NULL,'test'); //test
SELECT IFNULL('ccc','test'); //ccc
SELECT IFNULL(NULL,NULL); //NULL
SELECT COALESCE('wang','test'); //wang
SELECT COALESCE(NULL,'test'); //test
SELECT COALESCE('wang','test','test1','test2'); //wang
SELECT COALESCE(NULL,NULL,NULL,'test2'); //test2
SELECT COALESCE(NULL,NULL,NULL,NULL); //NULL
CAST(字段名 as 转换的类型 ),其中类型可以为:
CHAR[(N)] 字符型
DATE 日期型
DATETIME 日期和时间型
DECIMAL float型
SIGNED int
TIME 时间型
在强类型语言中,NULL并不等于0,比如下面例子
amount 字段是 DECIMAL(10, 2)
select SUM(amount) AS amount from account_list where user_id =10;
但是 SUM(amount)是未知类型的
这时候需要类型定义CAST以及给出默认值
select COALESCE(CAST(SUM(amount) AS DECIMAL(10, 2)), 0.00) AS amount from account_list where user_id =10;