[SQL Coalesce函数按顺序计算参数,并始终返回定义的参数列表中的第一个非null值。]https://www.sqlshack.com/using-the-sql-coalesce-function-in-sql-server/
如果总是返回第一个非null参数,为什么要添加第二个/第三个非null的参数,或者只使用IFNULL((?
首先,COALESCE()
是标准SQL。我的建议是使用标准的SQL函数,除非您有理由使用IFNULL()
之类的定制函数。
其次,IFNULL()
被限制为两个参数。COALESCE()
更强大,因为它可以接受任意数量的参数。
如果第一个参数为null,则Coalesce返回参数列表中的第一个非null值。这些参数列表可以是常量值,也可以是其他列值的派生值。
主要用于必须从其他列派生值或将null替换为给定列不接受null的列的值的情况。
示例:如果一列表示折扣%,则该值可以是值或0.0,但不能为null。
coalesce(special_discount,base_discount_column,0.05)
这里的特殊折扣如果为空,则考虑基础折扣值,如果基础折扣也为空,那么默认情况下取5%的折扣。