<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: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 亚洲综合亚洲综合网成人| 好大好硬好爽免费视频| 亚洲色偷偷偷鲁综合| 美女黄频免费网站| 免费播放特黄特色毛片| 黄色毛片视频免费| 亚洲一区二区精品视频| 99久久成人国产精品免费| 亚洲国产成人片在线观看无码| 成人性做爰aaa片免费看| 久久久久亚洲AV片无码| 亚洲视频在线观看免费视频| 亚洲Av无码一区二区二三区| 欧亚精品一区三区免费| 亚洲精品GV天堂无码男同| 亚洲阿v天堂在线2017免费| 精品乱子伦一区二区三区高清免费播放| 国产亚洲综合成人91精品| 最近免费2019中文字幕大全| 亚洲综合色7777情网站777| 日本免费一区尤物| 中文字幕免费在线看电影大全 | 国产人成免费视频网站| 亚洲精品伊人久久久久| 国产一区二区三区免费在线观看| 国产日韩精品无码区免费专区国产| 无码欧精品亚洲日韩一区| 成人免费视频观看无遮挡| EEUSS影院WWW在线观看免费| 亚洲高清日韩精品第一区| 国内自产少妇自拍区免费| 国产中文字幕在线免费观看 | 自怕偷自怕亚洲精品| 影音先锋在线免费观看| 国产日韩久久免费影院 | 久久精品国产精品亚洲精品| 国内精品免费麻豆网站91麻豆| 国产亚洲精品美女2020久久| 亚洲精品天天影视综合网| 国产伦精品一区二区三区免费迷 | 久久精品无码专区免费青青|