<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    新的起點

    新的起點
    隨筆 - 9, 文章 - 1, 評論 - 1, 引用 - 0
    數據加載中……

    Oracle數據庫中null的使用詳解

        問:什么是NULL?

      答:在我們不知道具體有什么數據的時候,也即未知,可以用NULL,我們稱它為空,ORACLE中,含有空值的表列長度為零。ORACLE允許任何一種數據類型的字段為空,除了以下兩種情況:

      1、主鍵字段(primary key),

      2、定義時已經加了NOT NULL限制條件的字段。


    附加說明:

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

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

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

      4、NULL的處理使用NVL函數。

      5、比較時使用關鍵字用“is null”和“is not null”。

      6、空值不能被索引,所以查詢時有些符合條件的數據可能查不出來,

      count(*)中,用nvl(列名,0)處理后再查。

      7、排序時比其他數據都大(索引默認是降序排列,小→大),

      所以NULL值總是排在最后。

      使用方法:

     1 SQL> select 1 from dual where null=null;
     2 沒有查到記錄
     3 SQL> select 1 from dual where null='';
     4 沒有查到記錄
     5 SQL> select 1 from dual where ''='';
     6 沒有查到記錄
     7 SQL> select 1 from dual where null is null;
     8         1
     9 ---------
    10         1
    11 SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
    12         1
    13 ---------
    14         1
    15 

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

    1 SQL> select 1+null from dual;
    2 SQL> select 1-null from dual;
    3 SQL> select 1*null from dual;
    4 SQL> select 1/null from dual;

      查詢到一個記錄。

      注:這個記錄就是SQL語句中的那個null

      設置某些列為空值

      update table1 set 列1=NULL where 列1 is not null;

      現有一個商品銷售表sale,表結構為:

      month  char(6)  ——月份

      sellnumber(10,2) ——月銷售金額

     1 create table sale (month char(6),sell number);
     2 insert into sale values('200001',1000);
     3 insert into sale values('200002',1100);
     4 insert into sale values('200003',1200);
     5 insert into sale values('200004',1300);
     6 insert into sale values('200005',1400);
     7 insert into sale values('200006',1500);
     8 insert into sale values('200007',1600);
     9 insert into sale values('200101',1100);
    10 insert into sale values('200202',1200);
    11 insert into sale values('200301',1300);
    12 insert into sale values('200008',1000);
    13 insert into sale(monthvalues('200009');
    14          (注意:這條記錄的sell值為空)
    15 commit;

    共輸入12條記錄,此時我們做如下的查詢:

    SQL> select * from sale where sell like '%';
    MONTH       SELL
    ------ ---------
    200001      1000
    200002      1100
    200003      1200
    200004      1300
    200005      1400
    200006      1500
    200007      1600
    200101      1100
    200202      1200
    200301      1300
    200008      1000

      查詢到11記錄。

      結果說明:

      查詢結果說明此SQL語句查詢不出列值為NULL的字段

      此時需對字段為NULL的情況另外處理。

    SQL> select * from sale where sell like '%' or sell is null;
    SQL
    > select * from sale where nvl(sell,0like '%';
           
    MONTH       SELL
    ------ ---------
    200001      1000
    200002      1100
    200003      1200
    200004      1300
    200005      1400
    200006      1500
    200007      1600
    200101      1100
    200202      1200
    200301      1300
    200008      1000
    200009

      查詢到12記錄,Oracle的空值就是這么的用法,我們最好熟悉它的約定,以防查出的結果不正確。

        對于NULL而言還有一個特殊的用法:

    select NULL from sale where sell>1500;

        以上語句中并沒有什么特殊的含義,它只是想得到是否有符合條件的記錄,而不在乎取出什么字段,于是用NULL來代替一下。

      總結:null就是null,和別的類型沒有可比性。






    posted on 2008-12-14 19:35 軋鋼王子 閱讀(376) 評論(0)  編輯  收藏 所屬分類: Oracle 語法

    主站蜘蛛池模板: 日韩精品无码一区二区三区免费| 免费一级特黄特色大片| 免费视频一区二区| 亚洲精品成人网站在线观看| 免费一区二区无码视频在线播放| 四虎国产精品免费视| 国产亚洲综合精品一区二区三区| 免费观看男人免费桶女人视频| 国产成人亚洲合集青青草原精品| 国产免费av片在线无码免费看| 人妻视频一区二区三区免费| 亚洲成人激情在线| 久久久久亚洲?V成人无码| 看亚洲a级一级毛片| 免费午夜爽爽爽WWW视频十八禁| 亚洲国产成人综合精品| 国产免费资源高清小视频在线观看| 国产产在线精品亚洲AAVV| 国产成人亚洲影院在线观看| 中文字幕在线观看免费| 亚洲人成在线影院| 成人免费视频一区| 免费人成大片在线观看播放电影 | 久久久久成人片免费观看蜜芽| 亚洲av综合avav中文| 99热在线免费播放| 亚洲日韩精品无码专区加勒比☆| 亚洲成aⅴ人片久青草影院| a级午夜毛片免费一区二区| 亚洲综合亚洲国产尤物| 免费激情视频网站| 91精品国产免费久久久久久青草 | 草久免费在线观看网站| 中文字幕中韩乱码亚洲大片| 无码av免费一区二区三区| 国产成人亚洲合集青青草原精品| 五月婷婷亚洲综合| 中文字幕视频免费| 日韩在线视频免费| 亚洲电影在线免费观看| 免费va人成视频网站全|