oracle null和 ''的区别

SQL> set serveroutput on
SQL> declare l_t varchar2(10);
  2  begin
  3          l_t := '';
  4          if l_t is null then
  5             dbms_output.put_line('null');
  6          end if;
  7  end;
  8  /
null
PL/SQL procedure successfully completed
上面代码说明,varchar2的时候null和''是等价的

SQL> set serveroutput on
SQL> declare l_t char(10);
  2  begin
  3          l_t := '';
  4          if l_t is null then
  5             dbms_output.put_line('null');
  6          else
  7             dbms_output.put_line('not null');
  8          end if;
  9  end;
 10  /
not null
PL/SQL procedure successfully completed
上面的代码说明在char的时候null不等于''
SQL> create table test_null (a char(10),b varchar2(10));
Table created


SQL> insert into test_null values('','');
1 row inserted


SQL> select * from test_null;
A          B
---------- ----------


SQL> select nvl2(a,'not null','null'),nvl2(b,'not null','null') from test_null;
NVL2(A,'NOTNULL','NULL') NVL2(B,'NOTNULL','NULL')
------------------------ ------------------------
null                     null


SQL> 
说明char和varchar2作为列的时候null和''是一样的,char作为变量申明的时候,null和''是不一样的,值设定为' ',长度为char定义的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值