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

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

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

    新的起點(diǎn)

    新的起點(diǎn)
    隨筆 - 9, 文章 - 1, 評(píng)論 - 1, 引用 - 0
    數(shù)據(jù)加載中……

    Oracle數(shù)據(jù)庫中null的使用詳解

        問:什么是NULL?

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

      1、主鍵字段(primary key),

      2、定義時(shí)已經(jīng)加了NOT NULL限制條件的字段。


    附加說明:

      1、等價(jià)于沒有任何值、是未知數(shù)。

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

      3、對(duì)空值做加、減、乘、除等運(yùn)算操作,結(jié)果仍為空。

      4、NULL的處理使用NVL函數(shù)。

      5、比較時(shí)使用關(guān)鍵字用“is null”和“is not null”。

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

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

      7、排序時(shí)比其他數(shù)據(jù)都大(索引默認(rèn)是降序排列,小→大),

      所以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 

    對(duì)空值做加、減、乘、除等運(yùn)算操作,結(jié)果仍為空。

    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;

      查詢到一個(gè)記錄。

      注:這個(gè)記錄就是SQL語句中的那個(gè)null

      設(shè)置某些列為空值

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

      現(xiàn)有一個(gè)商品銷售表sale,表結(jié)構(gòu)為:

      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條記錄,此時(shí)我們做如下的查詢:

    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記錄。

      結(jié)果說明:

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

      此時(shí)需對(duì)字段為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的空值就是這么的用法,我們最好熟悉它的約定,以防查出的結(jié)果不正確。

        對(duì)于NULL而言還有一個(gè)特殊的用法:

    select NULL from sale where sell>1500;

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

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






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

    主站蜘蛛池模板: 亚洲免费观看网站| 亚洲中文字幕无码专区| 国产偷国产偷亚洲清高APP| 亚洲精品国产精品乱码不卞| 99热在线观看免费| 国产AV日韩A∨亚洲AV电影| 亚洲AV无码一区二区乱子伦| 成人免费一区二区无码视频| 国产高潮久久免费观看| 亚洲国产福利精品一区二区| 国产成人亚洲综合| 国产99视频精品免费观看7| 五月天婷婷免费视频| 亚洲av极品无码专区在线观看| 亚洲国产成人久久笫一页| 18国产精品白浆在线观看免费 | 亚洲成AV人片一区二区| 黄瓜视频影院在线观看免费| 99re6在线精品免费观看| 亚洲а∨精品天堂在线| 亚洲宅男永久在线| 亚洲av麻豆aⅴ无码电影| 免费毛片a在线观看67194| 中文字幕一区二区三区免费视频| 两个人看www免费视频| 亚洲人成电影院在线观看| 亚洲精品国产精品乱码不99| 国产高清免费观看| 国产成人精品免费视频网页大全| 国产99久久久国产精免费| 亚洲第一街区偷拍街拍| 亚洲精品国产手机| 国产精品亚洲а∨无码播放| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产福利在线观看免费第一福利| 四虎影视无码永久免费| 国产精品亚洲片在线花蝴蝶| 亚洲六月丁香婷婷综合| 亚洲制服中文字幕第一区| 久久99国产亚洲高清观看首页| mm1313亚洲精品无码又大又粗|