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

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

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

    Energy of Love  
    日歷
    <2009年6月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011
    統計
    • 隨筆 - 70
    • 文章 - 0
    • 評論 - 80
    • 引用 - 0

    導航

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     
    1、Windows NT4.0+ORACLE 8.0.4
    2、ORACLE安裝路徑為:C:ORANT

    含義解釋:
    問:什么是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值總是排在最后。

    使用方法:
    SQL> select 1 from dual where null=null;

    沒有查到記錄

    SQL> select 1 from dual where null='';

    沒有查到記錄

    SQL> select 1 from dual where ''='';

    沒有查到記錄

    SQL> select 1 from dual where null is null;

    1
    ---------
    1

    SQL> select 1 from dual where nvl(null,0)=nvl(null,0);

    1
    ---------
    1

    對空值做加、減、乘、除等運算操作,結果仍為空。
    SQL> select 1+null from dual;
    SQL> select 1-null from dual;
    SQL> select 1*null from dual;
    SQL> select 1/null from dual;

    查詢到一個記錄.

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

    設置某些列為空值
    update table1 set 列1=NULL where 列1 is not null;

    現有一個商品銷售表sale,表結構為:
    month    char(6)      --月份
    sell    number(10,2)   --月銷售金額

    create table sale (month char(6),sell number);
    insert into sale values('200001',1000);
    insert into sale values('200002',1100);
    insert into sale values('200003',1200);
    insert into sale values('200004',1300);
    insert into sale values('200005',1400);
    insert into sale values('200006',1500);
    insert into sale values('200007',1600);
    insert into sale values('200101',1100);
    insert into sale values('200202',1200);
    insert into sale values('200301',1300);
    insert into sale values('200008',1000);
    insert into sale(month) values('200009');(注意:這條記錄的sell值為空)
    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,0) 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
    200009

    查詢到12記錄.

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

    以上來自http://www.cnoug.org/viewthread.php?tid=15087

     

    但對于char 和varchar2類型的數據庫字段中的null和空字符串是否有區別呢?

    作一個測試:

    create table test (a char(5),b char(5));

    SQL> insert into test(a,b) values('1','1');

    SQL> insert into test(a,b) values('2','2');

    SQL> insert into test(a,b) values('3','');--按照上面的解釋,b字段有值的

    SQL> insert into test(a) values('4');

    SQL> select * from test;

    A B
    ---------- ----------
    1 1
    2 2
    3
    4

    SQL> select * from test where b='';----按照上面的解釋,應該有一條記錄,但實際上沒有記錄

    未選定行

    SQL> select * from test where b is null;----按照上面的解釋,應該有一跳記錄,但實際上有兩條記錄。

    A B
    ---------- ----------
    3
    4

    SQL>update table test set b='' where a='2';
    SQL> select * from test where b='';

    未選定行

    SQL> select * from test where b is null;

    A B
    ---------- ----------
    2
    3
    4

    測試結果說明,對char和varchar2字段來說,''就是null;但對于where 條件后的'' 不是null。

    對于缺省值,也是一樣的!
     

    http://yseraphi.itpub.net/post/720/114646

    posted on 2009-06-17 12:00 不高興 閱讀(862) 評論(1)  編輯  收藏 所屬分類: Oracle
    評論:
     
    Copyright © 不高興 Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 最新亚洲人成无码网站| 成人激情免费视频| 女人被男人桶得好爽免费视频 | 日韩免费观看一区| 国产hs免费高清在线观看| 亚洲国产精品免费在线观看| 国产免费人成视频尤勿视频| 超pen个人视频国产免费观看| 亚洲色av性色在线观无码| 黄色免费在线网站| 永久免费无码网站在线观看| 亚洲av专区无码观看精品天堂| 久久99精品国产免费观看| 久久亚洲国产中v天仙www| 国产日韩AV免费无码一区二区三区| 亚洲av日韩片在线观看| 久久国产精品国产自线拍免费| 国产三级免费电影| 亚洲a∨国产av综合av下载| 无码一区二区三区AV免费| 亚洲乱码一二三四区国产| 免费看成人AA片无码视频吃奶| 亚洲国产av无码精品| 日韩a毛片免费观看| 毛片免费在线观看网站| 亚洲欧洲日产国码久在线观看| 四虎影视久久久免费观看| 日韩a级毛片免费观看| 亚洲AV色无码乱码在线观看| 国产精品成人四虎免费视频| 最新亚洲人成无码网站| 亚洲国产a级视频| 亚洲 暴爽 AV人人爽日日碰| 色窝窝免费一区二区三区| 国产人成亚洲第一网站在线播放| 国产麻豆视频免费观看| 亚洲精品无码成人| 青草草色A免费观看在线| 久久精品国产99国产精品亚洲| 久久精品免费视频观看| 亚洲一卡2卡3卡4卡国产网站 |