翼度科技»论坛 编程开发 mysql 查看内容

MySQL语句之条件语句IFNULL和COALESCE的区别说明

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
在MySQL中,
  1. IFNULL
复制代码
  1. COALESCE
复制代码
都是用来处理
  1. NULL
复制代码
值的函数,但它们之间存在一些重要的差异。

函数定义


    1. IFNULL(expr1, expr2)
    复制代码
    : 如果
    1. expr1
    复制代码
    1. NULL
    复制代码
    ,则返回
    1. expr2
    复制代码
    ,否则返回
    1. expr1
    复制代码

    1. COALESCE(value1, value2, ..., valueN)
    复制代码
    : 返回参数列表中的第一个非
    1. NULL
    复制代码
    值。

参数数量


    1. IFNULL
    复制代码
    接受两个参数。
    1. COALESCE
    复制代码
    可以接受任意数量的参数。

使用场景


  • 当你知道有两个可能的值时,可以使用
    1. IFNULL
    复制代码

  • 当处理一个值的列表,并希望返回第一个有效的值时,可以使用
    1. COALESCE
    复制代码


举个例子
  1. SELECT IFNULL(NULL, 'backup_value') AS IFNULL_Result;  -- 结果: backup_value
  2. SELECT COALESCE(NULL, 'backup_value') AS COALESCE_Result;  -- 结果: backup_value
复制代码
  1. SELECT IFNULL('not_null_value', 'backup_value') AS IFNULL_Result;  -- 结果: not_null_value
  2. SELECT COALESCE('not_null_value', 'backup_value') AS COALESCE_Result;  -- 结果: not_null_value
复制代码
当多个可能值的时候:
  1. SELECT COALESCE(NULL, NULL, 'third_value', 'fourth_value') AS COALESCE_Result;  -- 结果: third_value
复制代码
总结
  1. IFNULL
复制代码
只检查第一个参数是否为
  1. NULL
复制代码
,而
  1. COALESCE
复制代码
会检查所有参数。
对于只有两个参数的情况,
  1. IFNULL(expr1, expr2
复制代码
)和
  1. COALESCE(expr1, expr2)
复制代码
有相同的效果。
在某些场景下,可能想使用多个备选值,而不仅仅是两个,这时
  1. COALESCE
复制代码
会更有用。
简言之,如果只关心第一个参数是否为
  1. NULL
复制代码
,并为其提供一个备选值,那么可以使用
  1. IFNULL
复制代码

而若想从多个值中选择第一个非
  1. NULL
复制代码
的值,那么应该使用
  1. COALESCE
复制代码

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/database/319104j9l.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具