COALESCE函数按从左到右的顺序依次检查输入参数,一旦遇到第一个非 NULL 值,便立即返回该值,后续参数将不再被评估。
命令格式
COALESCE(<expr1>, <expr2>, ...)
-- 标准示例。
-- 返回1。
SELECT coalesce(NULL,NULL,1,NULL,3,5,7);参数说明
expr:必填。待验证的值。
返回值说明
返回值类型和参数数据类型相同。
使用示例
示例1:参数值类型未定义,返回报错。
-- 参数abc未定义类型,系统引擎无法识别。 -- FAILED: ODPS-0130071:[1,34] Semantic analysis exception - column abc cannot be resolved SELECT COALESCE(NULL,NULL,1,NULL,abc,5,7); -- 返回1。 SELECT COALESCE(NULL,NULL,1,NULL,'abc',5,7);示例2:在非表读取的情况下,如果参数值全部为空,则返回报错。
-- 返回报错,会提示至少有一个参数值非NULL。 -- FAILED: ODPS-0130071:[1,17] Semantic analysis exception - parameter 1 for function COALESCE expect at least one parameter should be non-null SELECT COALESCE(NULL,NULL,NULL,NULL);示例3:在表读取的情况下,如果参数值全部为空,则返回NULL。
原始数据表:
+-----------+-------------+------------+ | shop_name | customer_id | total_price | +-----------+-------------+------------+ | ad | 10001 | 100.0 | | jk | 10002 | 300.0 | | ad | 10003 | 500.0 | | tt | NULL | NULL | +-----------+-------------+------------+由原始数据表可以看出,tt的值全部为空。则执行以下语句后返回值为NULL。
SELECT COALESCE(customer_id,total_price) FROM sale_detail WHERE shop_name='tt';
相关函数
COALESCE函数属于其他函数,更多其他业务场景的函数请参见其他函数。
该文章对您有帮助吗?