oracle中null的影响,数据库中NULL对排序和选择条件的影响(Oracle and DB2)

NULL 最大,但即不大于1,也不小于1

-----------ORACLE

SQL> create table a(i integer,j integer);

Table created.

SQL> insert into a values(1,2);

1 row created.

SQL> insert into a(i) values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from a;

I          J

---------- ----------

1          2

2

SQL> select * from a order by j desc;

I          J

---------- ----------

2

1          2

SQL> c/desc/asc

1* select * from a order by j asc

SQL> /

I          J

---------- ----------

1          2

2

SQL> select * from a where j>1;

I          J

---------- ----------

1          2

SQL> c/>/<

1* select * from a where j<1

SQL> /

no rows selected

关于大于小于order by的试验:----------DB2

db2 =>

db2 => create table a(i integer,j integer);

create table a(i integer,j integer)

DB20000I  The SQL command completed successfully.

db2 =>  insert into a values(1,2);

insert into a values(1,2)

DB20000I  The SQL command completed successfully.

db2 =>  insert into a(i) values(2);

insert into a(i) values(2)

DB20000I  The SQL command completed successfully.

db2 =>  select * from a order by j desc;

select * from a order by j desc

I           J

----------- -----------

2           -

1           2

2 record(s) selected.

db2 => select * from a order by j asc

db2 (cont.) => ;

select * from a order by j asc

I           J

----------- -----------

1           2

2           -

2 record(s) selected.

db2 => select * from a where j>1;

select * from a where j>1

I           J

----------- -----------

1           2

1 record(s) selected.

db2 => select * from a where j<1;

select * from a where j<1

I           J

----------- -----------

0 record(s) selected.

ORACLE 与DB2的处理是一模一样的。

---------------------------关于NULL 与 ''  -------------------DB2------------

db2 => create table b(i integer,j char(10));

create table b(i integer,j char(10))

DB20000I  The SQL command completed successfully.

db2 => insert into b values (1,'111');

insert into b values (1,'111')

DB20000I  The SQL command completed successfully.

db2 => insert into b values (2,'');

insert into b values (2,'')

DB20000I  The SQL command completed successfully.

db2 => insert into b(i) values (3);

insert into b(i) values (3)

DB20000I  The SQL command completed successfully.

db2 => commit;

commit

DB20000I  The SQL command completed successfully.

db2 => select * from b;

select * from b

I           J

----------- ----------

1 111

2

3 -

3 record(s) selected.

db2 => select * from b where j is null;

select * from b where j is null

I           J

----------- ----------

3 -

1 record(s) selected.

db2 => select * from b where j='';

select * from b where j=''

I           J

----------- ----------

2

1 record(s) selected.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DB2Oracle和MySQL这三种数据库,使用NULL值时存在一些区别。以下是它们之间的主要差异: 1. NULL的处理方式:NULL数据库表示缺失或未知的值。在DB2OracleNULL被视为特殊的值,与其他值不同。但在MySQLNULL被视为一种缺失的状态,而不是特殊的值。 2. 空字符串和NULL:在DB2Oracle,空字符串('')与NULL是不同的。空字符串表示一个有效的、具有零长度的字符串,而NULL表示缺失的值。然而,在MySQL,空字符串被视为NULL的一种特殊情况,因此在某些情况下它们可以互换使用。 3. 索引和NULL:在DB2Oracle,对于包含NULL值的列,可以使用索引进行查询优化。索引可以加速对包含NULL值的列的搜索。然而,在MySQL,默认情况下,对于包含NULL值的列,索引不会包含这些NULL值。需要使用特殊的NULL-friendly索引来支持对包含NULL值列的快速搜索。 4. 比较运算符:在DB2Oracle和MySQL,都可以使用比较运算符(如等于、不等于、大于、小于等)来处理NULL值。然而,它们在处理NULL值时的行为可能有所不同。例如,在DB2Oracle,使用等于(=)运算符比较NULL值时,结果将始终为FALSE,而在MySQL,结果将为UNKNOWN。 这些是DB2Oracle和MySQL在处理NULL值时的一些主要区别。了解这些差异对于正确处理和查询包含NULL值的数据非常重要。在编写数据库查询和应用程序逻辑时,请根据所使用的数据库系统来适当处理NULL值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值