ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB IFNULL函数

YashanDB IFNULL函数

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-06-05 12:02:42 0 删除 编辑

IFNULL函数有2个 expr参数,当expr1不为NULL时返回expr1,否则返回expr2。

expr1,expr2的值可以为任意数据类型。当expr1和expr2的数据类型相同时,函数返回此数据类型的值。

当expr1,expr2其中之一为RAW、JSON、CLOB、BLOB、NCLOB类型时,不允许与其它类型搭配使用,两个参数必须类型相同,否则函数返回错误,函数返回值类型同expr数据类型。

当expr1,expr2其中之一为XMLTYPE时,expr1和expr2的数据类型必须相同,否则函数返回错误,函数返回值类型为XMLTYPE类型。

若expr1和expr2的数据类型不相同,函数将先进行隐式类型转换后再返回结果,基本规则如下:

  • expr1与expr2分属如下不同大类组时,函数返回VARCHAR类型:

  • 数值型

  • 日期时间型

  • 字符型

  • ROWID

  • expr1与expr2其中之一为布尔型时:

    • 另一方属于非数值型的其他大类时,函数返回VARCHAR类型。

    • 另一方属于数值型(除BIT外)时,函数返回对应的数值类型。

  • 另一方为BIT类型时,函数返回BIGINT类型。

  • expr1与expr2均属于字符型时,函数返回VARCHAR类型。

  • expr1与expr2均属于日期时间型时,函数返回类型如下表所示:

expr1/expr2 DATE TIME TIMESTAMP INTERVAL
YEAR TO
MONTH
INTERVAL
DAY TO
SECOND
DATE DATE DATE TIMESTAMP VARCHAR VARCHAR
TIME DATE TIME TIMESTAMP VARCHAR VARCHAR
TIMESTAMP TIMESTAMP TIMESTAMP TIMESTAMP VARCHAR VARCHAR
INTERVAL
YEAR TO
MONTH
VARCHAR VARCHAR VARCHAR INTERVAL
YEAR TO
MONTH
VARCHAR
INTERVAL
DAY TO
SECOND
VARCHAR VARCHAR VARCHAR VARCHAR INTERVAL
DAY TO
SECOND

其中,在将TIME类型转换为DATE或TIMESTAMP类型时,年月日补充为当前日期。

  • expr1与expr2均属于数值型时,函数返回类型如下表所示:
expr1/expr2 BIT TINYINT SMALLINT INT BIGINT FLOAT DOUBLE NUMBER
BIT BIT BIGINT BIGINT BIGINT BIGINT DOUBLE DOUBLE NUMBER
TINYINT BIGINT TINYINT SMALLINT INT BIGINT FLOAT DOUBLE NUMBER
SMALLINT BIGINT SMALLINT SMALLINT INT BIGINT FLOAT DOUBLE NUMBER
INT BIGINT INT INT INT BIGINT FLOAT DOUBLE NUMBER
BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT FLOAT DOUBLE NUMBER
FLOAT DOUBLE FLOAT FLOAT FLOAT FLOAT FLOAT DOUBLE DOUBLE
DOUBLE DOUBLE DOUBLE DOUBLE DOUBLE DOUBLE DOUBLE DOUBLE DOUBLE
NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER DOUBLE DOUBLE NUMBER(p/s)
  • expr1与expr2均为NUMBER类型且精度相同时,函数返回此精度的NUMBER类型。
  • expr1与expr2为不同精度的NUMBER类型,或者一方为NUNBER类型,另一方为非NUMBER类型时,函数返回浮动精度的NUMBER类型。

示例

SELECT IFNULL(1, 2) res FROM DUAL;
         RES 
------------ 
           1SELECT IFNULL(NULL, 2) res FROM DUAL;RES   
----- 2    SELECT IFNULL(TRUE, 2) res FROM DUAL;
         RES 
------------ 
           1
             SELECT IFNULL(5, CAST('0.232222' AS FLOAT)) res,TYPEOF (IFNULL(5, CAST('0.232222' AS FLOAT))) res_typeFROM DUAL;
        RES RES_TYPE                                                         
----------- ---------- 
   5.0E+000 float


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3086745/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: YashanDB IF函数
下一篇: YashanDB INITCAP函数
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639807