<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无码一区二区二三区入口| 日韩在线免费电影| 成人午夜亚洲精品无码网站| 理论亚洲区美一区二区三区| 国产免费人视频在线观看免费| 亚洲暴爽av人人爽日日碰| 国内大片在线免费看| 小说区亚洲自拍另类| 亚洲人成网站色在线入口| 一级做a爰片性色毛片免费网站| 亚洲av无码不卡私人影院| 亚洲天堂免费在线视频| 亚洲女初尝黑人巨高清| 亚洲免费在线播放| 亚洲午夜一区二区电影院| 我要看免费的毛片| 一区二区三区免费在线视频 | 国产一级一毛免费黄片| 国产成A人亚洲精V品无码| 久久精品毛片免费观看| 亚洲永久在线观看| 亚洲av区一区二区三| 91成人免费福利网站在线| 亚洲黄色在线观看网站| 性感美女视频在线观看免费精品| 国产精品亚洲一区二区三区久久 | 亚洲国产一级在线观看| 拍拍拍无挡免费视频网站| 亚洲欧洲高清有无| 国产男女猛烈无遮档免费视频网站| 一级片在线免费看| 中文字幕亚洲综合精品一区| 精品免费久久久久久成人影院| 无码毛片一区二区三区视频免费播放 | 免费国产午夜高清在线视频| 亚洲制服丝袜中文字幕| 亚洲国产精品一区二区第四页| 久久国产精品2020免费m3u8 | 亚洲国产成a人v在线观看| 亚洲欧洲精品成人久久奇米网 | 热久久精品免费视频|