COALESCE操作符
一、应用场景
1、购买的零件和本地生产的零件都是零件,尽管多重的实体类型在数据存储上略有不同,但是它们有太多的相同之处,因此通常使用一个表格而不是两个。
所以这是如果我们需要计算零件的实际话费的话,那么他们的计算方式确是更具不同的字段来计算的,比如说本地生产的零件计算方式就只是成本这里用个字段cost表示.
而购买的零件的成本计算方式就大不相同了,它的是零件的销售价(selling price->sp)加上运费(fregit).
ok,就是用来干这个的,下面是解决代码:.
COALESCE(cost,sp+fregit) as money
如果当前零件记录的cost为空,也就是当前零件是购买的零件,那么实际花费按照销售价(selling price->sp)加上运费(fregit)的方式来计算
上面的只是COALESCE最简单的用途,下面才是它强大的地方,
2、强大之处
当COALESCE(expr1,expr2),当COALESCE中的表达式小于3的时候,它就相当于CASE WHEN expr1 IS NOT NULL THEN expr2 END
但是当COALESCE(expr1,expr2,expr3,…….exprn),当里面的表达式大于等于3的时候,那么他就会循环上面的操作,知道执行到里面的某一个表达式,他的值不为NULL为止
CASE WHEN expr1 IS NOT NULL THEN expr1
ELSE COALESCE (expr2, …, exprn) END