coalesce函数详解--判空三目表达式

最近写SQL的过程中,学习到一个非常有用的函数:coalesce。特别是在做统计的时候,这个函数作为条件可以兼顾到一些特殊情况。这里做一下总结和分享。

和if(条件,值,值)差不多

  • 用途:

(1):将控制替换成其他值

(2):返回第一个非空值

  • 表达式

COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。

 

  • SQL实例
select coalesce(success_cnt, 1) from tableA

当success_cnt 为null值的时候,将返回1,否则将返回success_cnt的真实值。

 

select coalesce(success_cnt,period,1) from tableA

当success_cnt不为null,那么无论period是否为null,都将返回success_cnt的真实值(因为success_cnt是第一个参数),当success_cnt为null,而period不为null的时候,返回period的真实值。只有当success_cnt和period均为null的时候,将返回1。

 

 SELECT
            c.product_code      productCode,
            c.round,
            c.`name`            roundNameCn,
            c.is_cost_inclusive costInclusive,
            c.default_quantity  quantity,
            c.max_quantity      maxQuantity,
            c.min_quantity      minQuantity,
            CASE
                WHEN c.round_type = 1 THEN
                    0
                WHEN c.round_type = 5 THEN
                    1
                END             isChoices,
            c.composition_code  itemProductCode,
            IF(
                            c.default_product_code IS NULL || LENGTH(trim(c.default_product_code)) = 0,
                            i.item_product_code,
                            c.default_product_code
                )               defaultProductCode

        FROM
            t_product_combo_composition c
                LEFT JOIN t_product_choice_item i ON c.data_version = i.data_version
                AND c.composition_code = i.choice_code
                AND is_default = 1
        WHERE
            c.data_version = #{dataVersion}
    </select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值