空值在Oracle中的定义
空值(null)在Oracle中定义为缺失值,是与任何其他值都不同的一种特殊值。它代表着数据缺失或未知的情况,常常出现在未输入数据或在某些字段上没有数据的情况下。而在处理空值时,需要在语句中使用“IS NULL”或“IS NOT NULL”进行判断。
测试验证
测试表结构
CREATE TABLE “CRM”.“TEST20231130”
( “COLUMN1” VARCHAR2(100) DEFAULT ‘’,
“COLUMN2” VARCHAR2(100) DEFAULT null,
“COLUMN3” DATE DEFAULT sysdate
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE “CRM” ;
插入数据
INSERT INTO CRM.TEST20231130(COLUMN1,COLUMN2,COLUMN3) values(‘1’,‘2’,sysdate)
INSERT INTO CRM.TEST20231130(COLUMN1,COLUMN2,COLUMN3) values(‘2’,‘2’,sysdate)
INSERT INTO CRM.TEST20231130(COLUMN2,COLUMN3) values(‘3’,sysdate)
INSERT INTO CRM.TEST20231130(COLUMN2,COLUMN3) values(‘4’,sysdate)
INSERT INTO CRM.TEST20231130(COLUMN1,COLUMN2,COLUMN3) values(’ ',‘5’,sysdate)
查询所有数据
SELECT * FROM CRM.TEST20231130
COLUMN1 COLUMN2 COLUMN3
1 2 2023-11-30 17:52:48.000
2 2 2023-11-30 17:52:58.000
3 2023-11-30 17:53:20.000
4 2023-11-30 17:54:09.000
5 2023-11-30 17:55:57.000
查询需求
想要查询出所有COLUMN1不为空的数据
尝试写法一
SELECT * FROM CRM.TEST20231130 WHERE COLUMN1<>’’ #在MySQL里面可以查到结果
结果无记录!!!
尝试写法二
SELECT * FROM CRM.TEST20231130 WHERE COLUMN1 IS NOT null #MySQL里面查到包括 默认值为’'的数据
COLUMN1 COLUMN2 COLUMN3
1 2 2023-11-30 17:52:48.000
2 2 2023-11-30 17:52:58.000
5 2023-11-30 17:55:57.000
尝试写法三
SELECT * FROM CRM.TEST20231130 where nvl(COLUMN1,‘null’)<>‘null’ #MySQL里面不能这样写,没有nvl函数
COLUMN1 COLUMN2 COLUMN3
1 2 2023-11-30 17:52:48.000
2 2 2023-11-30 17:52:58.000
5 2023-11-30 17:55:57.000
总结
在Oracle里面,默认值设置为’‘存储上等价于null,只能使用 “IS NULL”或者 “IS NOT NULL”来判断,但是MySQL里面字段默认值为’‘是 IS NOT NULL的存在,可以用 <>’'来判断是否非空。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




