Oracle与MySQL差异之空值替换 您所在的位置:网站首页 pg空值处理 Oracle与MySQL差异之空值替换

Oracle与MySQL差异之空值替换

2024-06-30 23:17| 来源: 网络整理| 查看: 265

Oracle与MySQL差异之空值替换–Oracle NVL、NVL2与 MySQL ifnull、coalesce 1 Oracle数据库的空值转换有2个函数,分别是NVL、NVL2。

1)NVL(s1,s2):若s1不为null,则返回s1,否则返回s2。

SELECT NVL('S', 'R') FROM DUAL; -- S SELECT NVL(NULL, 'R') FROM DUAL; -- R

2)NVL2(s1,s2,s3):若s1不为null,则返回s2,否则返回s3。

SELECT NVL2('S', 'R1', 'R2') FROM DUAL; -- R1 SELECT NVL2(NULL, 'R1', 'R2') FROM DUAL; -- R2 2 MySQL数据库的空值转换也有2个函数,分别是ifnull、coalesce。

1)ifnull(s1,s2):和Oracle的NVL(s1,s2)一样,若s1不为null,则返回s1,否则返回s2。所以可以用ifnull函数替代Oracle的NVL函数。

select ifnull('S', 'R'); -- S select ifnull(null, 'R'); -- R

2)coalesce(s1,s2,…,R):此函数可有多个参数,前面多个参数为判断条件,若非最后一位的参数都为null,则返回最后一位参数R,否则返回第一个非null的参数。当只有两个参数时可替代Oracle的NVL函数。

SELECT coalesce(NULL, 'R'); -- R SELECT coalesce('S1', 'S2', 'S3', 'R'); -- S1 SELECT coalesce(NULL, 'S2', 'S3', 'R'); -- S2 SELECT coalesce(NULL, NULL, 'S3', 'R'); -- S3 SELECT coalesce('S1', NULL, 'S3', 'R'); -- S1 SELECT coalesce(NULL, NULL, NULL, 'R'); -- R 3 MySQL替换Oracle

1)Oracle的NVL()函数可以用 ifnull(s1,s2)、coalesce(s1,R) 这两个函数替代。

2)Oracle的NVL2()函数MySQL无现成函数可替代,只能用case when 来替代。

select case when S1 is not null then R1 else R2 end;

select case when 'S' is not null then 'R1' else 'R2' end; -- R1 select case when null is not null then 'R1' else 'R2' end; -- R2


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有