如果 expr2expr3 的数据类型不同,则 OceanBase 将其中一个隐式转换为另一个。 如果它们不能隐式转换,则数据库返回错误。 如果 expr2 是字符或数字数据,则隐式转换规则如下:

  • 如果 expr2NUMBERFLOATBINARY_FLOATBINARY_DOUBL 数值型数据,则 OceanBase 确定哪个参数具有最高的数值优先级,隐式地将另一个参数转换为该数据类型,并返回该数据类型。

如果 expr1expr2NULL,则返回 。如果 expr1CHARNCHARNVARCHARVARCHAR2VARCHAR 字符型数据,则返回 expr1 字符集的 VARCHAR2。如果 expr1NUMBERFLOATBINARY_FLOATBINARY_DOUBLE 数值型数据,则返回 expr1 中具有最高数字优先级的数据类型。

假设有一张表 EMPLOYEES,给员工姓名列 name、薪资列 salary 和佣金列 commission_pct 里面插入数据,执行以下语句:

使用 NVL2 函数查询员工的总收入。如果员工的 commission_pct 列不为空,则员工的收入为工资加佣金,否则,收入仅仅为工资。执行以下语句: