深入理解null的原理
生活随笔
收集整理的這篇文章主要介紹了
深入理解null的原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--null的原理
--oracle一直將null和空字符串’’<長度為0>同等對待<如’’ is null是true,’’=null為false,如果聲明a varchar2:=’’,那么a is null為true,a=’’為false>--1.null的運算
--算術表達式和null 運算總為null,實際上所有的操作符除了||連接操作符外,只要有一個操作符為null,則結果為null。
--------------------------------null操作符運算------------------------------
--算術操作,只要有一個操作數為null,則結果為null
select null+10,null*10,null-10,null/10 from dual;
--連接操作符||除外,null相當于空字符串
select null||'abc', ''||'abc' from dual;--abc ,abc--2.null在函數中的使用
create table nulltest as
select null a from dual
union all
select 1 from dual
union all
select 2 from dual;
alter table test2 add constraints uk_nulltest_id primary key(city);--null在組函數中的使用,sum,avg,min,max都會忽略null值
select sum(a) from nulltest; --3
select avg(a) from nulltest; --1.5
select min(a) from nulltest; --1
select max(a) from nulltest; --2--null在count函數中
--(1)如果指定count(*)或count(1)則不會忽略null(count(*)和count(1)效果一樣,效率也沒有什么差別)
--(2)如果是count(列名)則會忽略null
select count(*) from nulltest; --3 包含了null的計算
select count(1) from nulltest; --3 包含了null的計算
select count(a) from nulltest; --2 忽略了null
select count(rowid) from nulltest; --3--3.null在條件中的使用
--如果一個操作數含有null,只能通過is null 和is not null 來比較才能返回true 或false,否則返回的結果只能是unkown.--4.null和索引、執行計劃的關系(null在查詢優化中的使用)
--如果是b*tree索引,單列索引,索引列上有null值,則is null不走索引,當然is not null可能走索引,看cbo計劃.
--另外如果要走索引,可以使用bitmap索引或者使用復合索引,確保另一列上無null。
?
轉載于:https://www.cnblogs.com/huangbiquan/p/8001743.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的深入理解null的原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCL编程入门(一)
- 下一篇: 顺序表归并