写点什么

YashanDB COALESCE 函数

作者:YashanDB
  • 2025-04-22
    广东
  • 本文字数:803 字

    阅读完需:约 3 分钟


COALESCE 函数在多个 expr 的值中,查找到第一个不为空的 expr 值,并将其返回,未查找到时返回 NULL。expr 的数量最少为 2 个,最多为 100 个。

expr 值的数据类型可以为 YashanDB 支持的大多数类型,但同一个参数列表里所有 expr 值的数据类型必须处于下面同一个分类中,否则函数返回 Inconsistent datatype 错误:

  • 数值型:按优先度从高到低为 DOUBLE、FLOAT、NUMBER、BIGINT、INT、SMALLINT、TINYINT,但 BIT 类型只能与同类型在同一个参数列表中。

  • 字符型:

    按优先度从高到低为 VARCHAR、CHAR。

    按优先度从高到低为 NVARCHAR、NCHAR。

  • 日期时间型:按优先度从高到低为 TIMESTAMP、DATE、TIME,但 INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND 只能与同类型在同一个参数列表中。

  • 布尔型:BOOLEAN

  • CLOB

  • BLOB

  • NCLOB

  • XMLTYPE


如所有 expr 值的数据类型处在同一分类中(字符型数据包含两个子分类),但具体类型不相同,函数将按上面所列优先级顺序进行类型转换,如(expr1 NUMBER, expr2 SMALLINT,expr3 FLOAT)时,expr1、expr2 的数据类型将被转换成 FLOAT,且函数返回一个 FLOAT 型数据。


当同一个参数列表里的所有 expr 值均为 NULL 时,函数返回 NULL。

示例

-- numbers_nobit表中包含如下字段和数据SELECT numbera,numberb,numberc,numberd,numbere,numberf,numberg FROM numbers_nobit;     NUMBERA NUMBERB  NUMBERC               NUMBERD     NUMBERE     NUMBERF     NUMBERG------------ ------- -------- --------------------- ----------- ----------- -----------          -5      55     5555   5555555555555555555  5.555E+000  5.556E+000         555 -- 按照三个expr中数据类型优先级最高的进行转换,numbera的值被转换为FLOAT类型SELECT COALESCE(numbera,numberb,numbere) res FROM numbers_nobit;        RES -----------   -5.0E+000
SELECT COALESCE('','',true) res FROM DUAL;RES -------------------- true
复制代码


用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB COALESCE函数_yashandb_YashanDB_InfoQ写作社区