Oracle与MySQL差异之空值替换 | 您所在的位置:网站首页 › pg空值处理 › Oracle与MySQL差异之空值替换 |
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; -- R2)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'); -- R2)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替换Oracle1)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 实验室设备网 版权所有 |