一、业务场景
处理业务数据的时候遇到这个场景,相信大家多少也遇到过类似的:对业务的一张质量问题单表中,有两个字段是用来判断问题单的严重情况,若其中任意一个字段非空,则为严重,否则相反,针对严重的问题单业务会重点进行数据分析。
需要已经了解了,下面就结合对应的函数来执行,coalesce函数正是可以用来判断非空字符内容的“法宝”。
二、coalesce函数解释
coalesce():返回参数中的第一个非空表达式(从左向右)
下面举例几个实例,这样就一目了然
SELECT coalesce(null
,
1
,
2
);
// 返回1
SELECT coalesce(null
,"A"
,"B"
);
// 返回A
SELECT coalesce(1
,"A"
,"B"
);
// 返回1
SELECT coalesce(NULL, NULL); //返回 Null
SELECT coalesce(NULL, ""); //返回 空字符
三、业务解析SQL
知道了函数的用法,接下来就是带入到业务的实际场景中来分析了,我们假设两个字段是A,B;若都为空则为不严重,任意一个非空则为严重,在此我结合了case when 将是否严重存在一个新字段flag,我们用1表示严重,0表示不严重。
SQL如下:
SELECT
NO,
CREATE_TIME,
DESC,
...,
case when coalesce(A,B) is null then 0 else 1 end as flag
FORM PROBLEM_F
总结:coalesce函数中的参数可以多个,功能还是非常强大的。结合case when,进行对两个参数判断的结果值分别进行赋值给一个新字段flag,这样就能通过该字段值来判断,严重的问题单有哪些。