關於oracle中 及 null 使用注意點

2021-07-24 07:08:32 字數 1622 閱讀 4419

title  stepname

關於繼續開展下半年度集團早高峰保駕工作的通知     傳閱

關於繼續開展下半年度集團早高峰保駕工作的通知     null

關於配合國資委協同辦公平台統一許可權配置的相關事宜    null

執行如下語句:

select t.title,t.stepname from t_todo_item t where t.loginname='st/g00100000161' and t.stepname!='傳閱'

返回結果為空;

執行如下語句,結果才是希望得到的結果(stepname!='傳閱')

select t.title,t.stepname from t_todo_item t where t.loginname='st/g00100000161' and (t.stepname!='傳閱' or t.stepname is null)

關於繼續開展下半年度集團早高峰保駕工作的通知null

關於配合國資委協同辦公平台統一許可權配置的相關事宜null

因為null 不能用 = 或 != 來作為判斷,只能使用 is null 或者 is not null

所以當 stepname!='傳閱'時,null 未符合條件,故第一句的sql 是錯誤的。

也可以使用 nvl 函式

select t.title,t.stepname from t_todo_item t where t.loginname='st/g00100000161' and nvl(t.stepname,'123')!='傳閱'

總之,需要注意的就是 oracle 中的 null 不能用 =及!=用來比較 ,只能使用is null 或者 is not null,

當字段中有null時,需要區別對待。

說明: 

1、等價於沒有任何值、是未知數。 

2、null與0、空字串、空格都不同。 

3、對空值做加、減、乘、除等運算操作,結果仍為空。 

4、null的處理使用nvl函式。 

5、比較時使用關鍵字用「is null」和「is not null」。 

6、空值不能被索引,所以查詢時有些符合條件的資料可能查不出來,count(*)中,用nvl(列名,0)處理後再查。 

7、排序時比其他資料都大(索引預設是降序排列,小→大),所以null值總是排在最後。

oracle 中關於null的操作

空值 空值一般用null表示 一般表示未知的 不確定的值,也不是空格 一般運算子與其進行運算時,都會為空 空不與任何值相等 表示某個列為空用 is null 不能使用comm null這種形式 某個列不為空 is not null 不能使用comm null 這種形式 空值在作公升序排列時,空值會放...

oracle 關於null值排序

在oracle中根據欄位來desc排序的話null值可能會在資料的最前面。然而有時候我們檢視資料的時候並不希望能夠在前面看到這些null值的排序資料。因此我查了一下 1.排序的時候運用nvl decode case.when.函式可以給null值指定乙個值去干擾他排序的位置,如果nvl xx,則是不...

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...