Oracle 字段为null做where时的处理

1. oracle中把有null值的字段当做where查询条件时,有null的数据会返回false
  • 原数据:
SELECT * FROM GGS."student02"
原数据
  • null值的字段当做where条件:
SELECT * FROM GGS."student02" a WHERE exists (SELECT * FROM GGS."student02" b WHERE a."age" =b."age" AND a."name" = b."name")
null值的字段当做where条件
  • 同样一张表,age = null 的数据没有了
2.使用函数:nvl(字段,值),当指定字段为null时,以值代替null进行比较
SELECT * FROM GGS."student02" a WHERE exists (SELECT * FROM GGS."student02" b WHERE NVL(a."age", 0) = NVL(b."age", 0) AND a."name" = b."name")
nvl(字段,值)
  • 测试数据

CREATE TABLE "GGS"."student02" (
"name" VARCHAR2(255 BYTE) ,
"age" NUMBER
);
INSERT INTO "GGS"."student02" VALUES ('李四', '21');
INSERT INTO "GGS"."student02" VALUES ('王五', '22');
INSERT INTO "GGS"."student02" VALUES ('张三', NULL);
INSERT INTO "GGS"."student02" VALUES ('赵六', NULL);
INSERT INTO "GGS"."student02" VALUES ('张三', '20');

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容