首页 > 数据库 > 国内数据库 > YashanDB IFNULL函数
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 | 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) |
示例
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3086745/ ,如需转载,请注明出处,否则将追究法律责任。