mysql语句转oracle近期遇到了一个sql语句因在不同数据库中NULL值和空值定义不同,而引发结果集异常的问题,鉴于各家数据库针对NULL值和空值处理标准不一的情况,在此分享一下Oracle 、Mysql 、南大通用GBase 三款数据库在处理NULL值与空值上各自的行为表现,以便大家有更好的认识与掌握。
测试采用数据库版本分别是Oracle 12.2.0.1、Mysql 5.5和GBase 8s 3.0.0。文章仅对各数据库厂商在NULL值与空值上定义的行为差异做展示,不做具体结果评估。
1,插入结果展示:
本章节展示各数据库在插入时,针对NULL值和空值的行为,测试语句如下:
create table t1(num int,id int ,name varchar (10));
insert into t1 values(1,null,null);
insert into t1 values(2,'','');
insert into t1 values(3,1,'');
insert into t1 values(4,1,null);
无法创建java虚拟机怎么办insert into t1 values(5,'',1);
insert into t1 values(6,null,1);
查询语句:
select*from t1;
Oracle结果:
Mysql结果:
GBase结果:
结果对比分析:
Oracle在插入时,int型和varchar型都将空值转换为NULL值存储展示;
汇编所有指令及其用法Mysql在插入时,不支持int型空值插入,varchar型空值和NULL值分别存储展示;
GBase 8s在插入时,int型将空值转换为NULL值存储展示,varchar型空值和NULL值分别存储展示;
怎么看一个游戏的源代码2,查询结果展示:
2.1 语句select * from t1 where id is null;
Oracle
Mysql
GBase 8sfunctions什么意思
结果对比分析:
Oracle和GBase 8s int型数据列都将空值转换为NULL值存储展示。
Mysql int型数据列无空值插入,仅有NULL值;
2.2 语句select * from t1 where id = '';
Oracle Mysql GBase8s 结果集都为0条。
结果对比分析:
与 2.1结果分析一致。
2.3 语句select * from t1 where name is null;
Oracle
Mysql
爱微奶官方下载GBase 8s
结果对比分析:
Oracle, varchar型将空值转换为NULL值存储展示;
Mysql和GBase 8s,varchar型数据列空值和NULL值分别存储展示。
2.4 语句select * from t1 where name ='';
Oracle 结果集 0条;
Mysql
GBase 8s
结果对比分析:
同2.3结果分析一致。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论