更新与NULL和''之间的区别?

时间:2013-07-01 09:05:30

标签: sql oracle

我已经习惯了两个查询将一列更新为NULL:

update table_name 
set col1 = NULL
where col2 = 'MUTHU';

update table_name 
set col1 = ''
where col2 = 'MUTHU';

但是当我以前用函数NVL查询时,我得到两个查询的相同结果。

select nvl(col1, 'value') from table_name;

我的问题是:NULL和''之间的'差异'和'使用'是什么?

2 个答案:

答案 0 :(得分:-1)

一个区别是null通常会传播,所以如果你用另一个字符串连接null:

create table t
(
  col1 varchar(10),
  col2 varchar(10),
  col3 varchar(10)
  );

insert into t values ( null, '', 'hello' ) ;

select 
 concat(col1 ,col3), 
 concat(col2 ,col3) 
from t

>> NULL, 'hello'

答案 1 :(得分:-1)

''表示该列的值为empty string

NULL表示“a missing unknown value”

所以NULL无法与=, <=进行比较等等