oracle中的null處理的簡單理解

2021-05-26 18:19:54 字數 1844 閱讀 5668

最近在檢查sql時碰到幾次對null處理的問題,迷惑了我們寫sql的思路。下面就我的理解和網上查到的資料,對null的操作做乙個總結。

首先對oracle中的null做一些簡單的說明:

1、oracle中null與0,空字串,空格,包括null與null也是不等的。

2、oracle中對null做算術運算結果仍然為null。

3、處理方法有nvl函式,比較方法是is null或者is not null。

4、null不能被索引,比如select count(null) from dual的查詢結果是0。

5、null排序比其他所有型別的大,乙個可以為空的字段倒排序,前面的都是null資料。

下面舉例說明:

1、sql> select 1 from dual where null=null;

未選定行

sql> select 1 from dual where null='';

未選定行

sql> select 1 from dual where null=0;

未選定行

sql> select 1 from dual where ''='';

未選定行

以上4個查詢中,大家可以看到null在oracle中可以理解為什麼都沒有的意思,它與任何物件都是不相等的。

2、

sql> select 1+null from dual;

1+null

----------

sql> select 1-null from dual;

1-null

----------

sql> select 1*null from dual;

1*null

----------

sql> select 1/null from dual;

1/null

----------

sql> select 1 from dual where 1+null is null;

1----------

1sql> select 1 from dual where 1-null is null;

1----------

1sql> select 1 from dual where 1*null is null;

1----------

1sql> select 1 from dual where 1/null is null;

1----------

1以上是null的加減乘除操作,可見null的加減乘除是null。

3、

sql> select 1 from dual where null is null;

1----------

1sql> select 1 from dual where '' is null;

1----------

1sql> select 1 from dual where nvl(null,0) is not null;

count(null)

-----------

0sql> select count(nvl(null, 0)) from dual;

count(nvl(null,0))

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

1以上兩個查詢提醒大家在統計的時候注意根據自己的需要處理null欄位的問題。

其他說明:

根據oracle中null的定義,null為未知,不等於null,因此在表中的唯一欄位中存在多個null是不會違反唯一行約束的。

oracle中NULL值處理

1 nvl expr1,expr2 功能 1 expr1 expr2均不為null時,返回expr1 2 expr1 expr2均為null時,返回null 3 expr1為null,expr2不為null,返回expr2 4 expr1不為null,expr2為null,返回expr1。2 nvl...

oracle中對null值的處理

1.在oracle的運算表示式中,如果表示式的某個值為null,則整個表示式的結果就會為null.就拿oracle自帶的emp表為例,想要計算出每位員工的年工資,如果使用下面這個sql語句 select sal 12 comm 12 年工資 ename from emp 因為只有 saleman 的...

oracle 對 Null的處理

1 預設處理 oracle在order by 時預設認為null是最大值,所以如果是asc公升序則排在最後,desc降序則排在最前 2 使用nvl函式 nvl函式可以將輸入引數為空時轉換為一特定值,如 nvl employee name,張三 表示當employee name為空時則返回 張三 如果...