国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

NULL 使用詳解

2024-07-21 02:38:51
字體:
來源:轉載
供稿:網友

  軟件環境:
  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的空值就是這么的用法,我們最好熟悉它的約定,以防查出的結果不正確。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵港市| 南溪县| 鄂尔多斯市| 巧家县| 张掖市| 安溪县| 通江县| 平度市| 南投市| 封开县| 昆明市| 潍坊市| 图片| 台东县| 武邑县| 瑞金市| 贵南县| 星座| 海门市| 盐边县| 苏尼特左旗| 遂平县| 湖北省| 深州市| 阳信县| 望城县| 轮台县| 师宗县| 花垣县| 红河县| 麟游县| 麻江县| 石渠县| 赤峰市| 左权县| 新化县| 柯坪县| 南华县| 聊城市| 泗水县| 舞钢市|