精品日韩在线,日韩精品福利一区二区三区,日韩午夜黄色,国产日韩欧美高清免费

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

Oracle中的NULL和空字符串

發布時間:  2012/8/30 16:47:18

Oracle中有個關鍵字叫NULL,它表示某個值是未知的、是不確定的。既然是未知的,就有無數種的可能性。因此,NULL并不是一個確定的值。先看兩個例子吧:

例1:

declare 

v_b1 boolean:=null; --布爾值可以賦值null.當然它另外兩種值只能是true,false了


 

v_a int := null; 
v_b int := null;      --整數可以給它賦值null
v_s  varchar2(20):= null ; --字符也可以賦值null
begin
if(v_a= v_b) then          --v_a 和v_b都是null但此處判斷的結果是它們并不相等.改成v_a =null結果仍然是一樣
dbms_output.put_line('v_a equal v_b');
else
dbms_output.put_line('v_a not equal v_b');--輸出這個結果
end if;

if(v_b1) then          --把v_b1改成not v_b1結果都一樣.也就是v_b1和把它取反都不會是true
dbms_output.put_line('v_b1 equal true');
else
dbms_output.put_line('v_b1 is not true');--輸出這個結果
end if;

if(true or v_b1) then          --輸出v_b1 equal true
dbms_output.put_line('v_b1 equal true');
else
dbms_output.put_line('v_b1 is not true'); -- 如果把前面的判斷條件改成true and v_b1 則輸入這條語句
end if;
end;


 

例2:

create table test (ename char(1),constraint ck_test check(ename in ('a',null)));

--上面的語句創建一個表,只有一列ename,給此列添加約束條件,它的值只能在列表('a',null)中.但實際上我們可以插入任何字符.這時貌似null可以代表所有的字符了.去掉它只能插入'a'

但如果我們這樣創建表

create table test1 (ename char(1),constraint ck_test check(ename not in ('a',null)));

--按我們猜想如果null能代表所有字符了那它取反就是不能輸入任何字符.但實際上不是.此處它貌似沒起任何作用.去掉它和不去掉效果一樣.都可以插入除'a'外的任何字符


1.怎么理解null的這些用法



看了上面兩個例子是不是有點暈了啊,其實我們可以這樣理解.既然null是個不確定的類型,就可以轉變成任何類型中的任何值.就像C#中的object類型.它是任何類型的父類.可以代表任何類型.我們可以在運行程序時再去動態確定它的具體類型.那么null如果是處在一個條件判斷條件中得讓它取特定類型的所有值去進行判斷.如果結果都為真才為真.

如例1中兩個整數值v_a,v_b都是null.要讓他們相等得讓null取所有的整數去判斷.那樣自然不可能都相等.所以為假.而true or v_b1之所以為真了是因為or前面的為真的話不去對后面的v_b1做判斷了.而v_b1和not v_b1都為假則可以認為v_b1可以取true和false,把這兩種值都代入則不可能保證都為true所以最終結果為false.

這樣來理解了null就不難明白為什么我們在一個表中插入一個null值.但我們不能通過判斷條件=null來查詢.不過Oracle提供了關鍵字is來判斷一個值是否是null.

例2中第二種情況是有點反常.我們就當作如果什么都不讓用戶插入,但建個表沒啥意義.所以不這樣
 

至于Oracle后臺是怎么存儲null值和操作null值的就不清楚了啊.


 

2.null和空字符串



其實空字符串和其他字符的操作是一樣的.只是用它的時候眼神要好點,別搞錯了.舉個例子

先建表create table arwen(ename varchar2(1)); --此列只能插入一個字符
 

insert into arwen values(' ');--注意引號中是一個空格.如果是兩個空格會出錯的,因為是兩個字符了.

select * from arwen where ename = ' '; --返回一行.這里引號中也必須是一個空格.

如果是''也就是引號中沒空格.那插入它時Oracle默認把它變成null了.所以如果引號中沒空格我們就不能叫它空字符串了啊.不知道叫啥好啊.覺得有null了它好像有點多余

例如create table arwen(eno int);

insert into arwen values(44);

insert into arwen alues(''); --引號是沒有空格
 

insert into arwen alues(null);

這上面三條語句都會成功插入.

雖然''被默認轉換成null但我們不能用is '' 或=''來用它

例如你select count(*) from arwen 或者select count(*) from arwen where ename is null--結果是3 
 

但如果是select count(*) from arwen where ename is ‘’ 或者 select count(*) from arwen where ename =‘’結果就是0


 

3.我們要用到null時常會用到函數nvl函數.



就是如果碰到哪個地方是null就把它轉換成其他的東東

例如上面插入三行后我們這樣查找select nvl(ename,11) from arwen; --結果是44     11     11

ename如果是null就轉換成11如果不是null就原樣輸出


 


 

4.使用null時注意



在用avg,max,min這些函數時會把null忽略掉

比如create table arwen(eno int);

insert into arwen values(1);

insert into arwen values(2);

insert into arwen values(null);

select avg(eno) from arwen;--結果為1.5.這是因為忽略掉null了不然應該是1的

select max(eno) from arwen;--結果為2

如果在排序中會把null當作最大值處理.就像無窮大一樣


 

在往表中插入數據時如果某列沒有插入值就讓它為null,這對用戶來說是非常方便的.但在其他地方用它好像沒太大必要.所以盡量別用好了.

只是在對表做些操作時多注意考慮到null判斷就好.多用nvl函數和is null判斷


本文出自:億恩科技【www.zuiquanben.com】


 

v_a int := null; 
v_b int := null;      --整數可以給它賦值null
v_s  varchar2(20):= null ; --字符也可以賦值null
begin
if(v_a= v_b) then          --v_a 和v_b都是null但此處判斷的結果是它們并不相等.改成v_a =null結果仍然是一樣
dbms_output.put_line('v_a equal v_b');
else
dbms_output.put_line('v_a not equal v_b');--輸出這個結果
end if;

if(v_b1) then          --把v_b1改成not v_b1結果都一樣.也就是v_b1和把它取反都不會是true
dbms_output.put_line('v_b1 equal true');
else
dbms_output.put_line('v_b1 is not true');--輸出這個結果
end if;

if(true or v_b1) then          --輸出v_b1 equal true
dbms_output.put_line('v_b1 equal true');
else
dbms_output.put_line('v_b1 is not true'); -- 如果把前面的判斷條件改成true and v_b1 則輸入這條語句
end if;
end;


 

例2:

create table test (ename char(1),constraint ck_test check(ename in ('a',null)));

--上面的語句創建一個表,只有一列ename,給此列添加約束條件,它的值只能在列表('a',null)中.但實際上我們可以插入任何字符.這時貌似null可以代表所有的字符了.去掉它只能插入'a'

但如果我們這樣創建表

create table test1 (ename char(1),constraint ck_test check(ename not in ('a',null)));

--按我們猜想如果null能代表所有字符了那它取反就是不能輸入任何字符.但實際上不是.此處它貌似沒起任何作用.去掉它和不去掉效果一樣.都可以插入除'a'外的任何字符


1.怎么理解null的這些用法



看了上面兩個例子是不是有點暈了啊,其實我們可以這樣理解.既然null是個不確定的類型,就可以轉變成任何類型中的任何值.就像C#中的object類型.它是任何類型的父類.可以代表任何類型.我們可以在運行程序時再去動態確定它的具體類型.那么null如果是處在一個條件判斷條件中得讓它取特定類型的所有值去進行判斷.如果結果都為真才為真.

如例1中兩個整數值v_a,v_b都是null.要讓他們相等得讓null取所有的整數去判斷.那樣自然不可能都相等.所以為假.而true or v_b1之所以為真了是因為or前面的為真的話不去對后面的v_b1做判斷了.而v_b1和not v_b1都為假則可以認為v_b1可以取true和false,把這兩種值都代入則不可能保證都為true所以最終結果為false.

這樣來理解了null就不難明白為什么我們在一個表中插入一個null值.但我們不能通過判斷條件=null來查詢.不過Oracle提供了關鍵字is來判斷一個值是否是null.

例2中第二種情況是有點反常.我們就當作如果什么都不讓用戶插入,但建個表沒啥意義.所以不這樣
 

至于Oracle后臺是怎么存儲null值和操作null值的就不清楚了啊.


 

2.null和空字符串



其實空字符串和其他字符的操作是一樣的.只是用它的時候眼神要好點,別搞錯了.舉個例子

先建表create table arwen(ename varchar2(1)); --此列只能插入一個字符
 

insert into arwen values(' ');--注意引號中是一個空格.如果是兩個空格會出錯的,因為是兩個字符了.

select * from arwen where ename = ' '; --返回一行.這里引號中也必須是一個空格.

如果是''也就是引號中沒空格.那插入它時Oracle默認把它變成null了.所以如果引號中沒空格我們就不能叫它空字符串了啊.不知道叫啥好啊.覺得有null了它好像有點多余

例如create table arwen(eno int);

insert into arwen values(44);

insert into arwen alues(''); --引號是沒有空格
 

insert into arwen alues(null);

這上面三條語句都會成功插入.

雖然''被默認轉換成null但我們不能用is '' 或=''來用它

例如你select count(*) from arwen 或者select count(*) from arwen where ename is null--結果是3 
 

但如果是select count(*) from arwen where ename is ‘’ 或者 select count(*) from arwen where ename =‘’結果就是0


 

3.我們要用到null時常會用到函數nvl函數.



就是如果碰到哪個地方是null就把它轉換成其他的東東

例如上面插入三行后我們這樣查找select nvl(ename,11) from arwen; --結果是44     11     11

ename如果是null就轉換成11如果不是null就原樣輸出


 


 

4.使用null時注意



在用avg,max,min這些函數時會把null忽略掉

比如create table arwen(eno int);

insert into arwen values(1);

insert into arwen values(2);

insert into arwen values(null);

select avg(eno) from arwen;--結果為1.5.這是因為忽略掉null了不然應該是1的

select max(eno) from arwen;--結果為2

如果在排序中會把null當作最大值處理.就像無窮大一樣


 

在往表中插入數據時如果某列沒有插入值就讓它為null,這對用戶來說是非常方便的.但在其他地方用它好像沒太大必要.所以盡量別用好了.

只是在對表做些操作時多注意考慮到null判斷就好.多用nvl函數和is null判斷


本文出自:億恩科技【www.enidc.com】
-->

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1-20183354
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 網絡版權侵權舉報電話:0371-60135995
  • 警情提示:注意防范電信網絡詐騙
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2026 ENKJ All Rights Reserved 地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師  B1-20183354   京公網安備41019702002023號 
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    精品日韩在线,日韩精品福利一区二区三区,日韩午夜黄色,国产日韩欧美高清免费
    国产高清日韩| 尹人成人综合网| 亚洲字幕久久| 国产乱人伦丫前精品视频| 91精品国产成人观看| 亚洲三级网站| 国产精品88久久久久久| 国产精品手机在线播放| 91精品亚洲| 老牛国内精品亚洲成av人片| 香蕉视频成人在线观看| 日本久久综合| 麻豆国产精品一区二区三区| 亚洲精品美女91| 亲子伦视频一区二区三区| 六月天综合网| 亚洲二区精品| 欧美日韩中文一区二区| 亚洲h色精品| 日韩网站中文字幕| 国产白浆在线免费观看| 免费日韩一区二区三区| 久久香蕉网站| 久久精品青草| 韩国三级一区| 一区二区三区四区在线看| 日韩区一区二| 蜜桃一区二区三区在线观看| 亚洲一区导航| 国产黄色一区| 韩国精品主播一区二区在线观看| 国产成人精品一区二区三区免费| 国产成人精品福利| 日韩欧美精品一区| 亚洲少妇在线| 欧美中文一区| 久久久久国产精品一区三寸| 亚洲国产欧美日本视频| 久久久精品区| 高清不卡亚洲| 亚洲精品va| 国产日韩三级| 欧美日韩一区二区综合| 国产精品三级| 亚洲性视频h| 久久精品欧美一区| 亚洲有吗中文字幕| 牛牛精品成人免费视频| 蜜桃伊人久久| 九九99久久精品在免费线bt| 亚洲欧美日韩国产| 国产福利电影在线播放| 日韩1区2区日韩1区2区| 日韩欧美精品一区| 蜜臀91精品一区二区三区| 樱桃视频成人在线观看| 精品中文字幕一区二区三区| 中文字幕av一区二区三区四区| 日韩欧美精品综合| 麻豆91精品视频| 国产精品**亚洲精品| 日本欧美在线看| 亚洲国内精品| 日韩在线观看不卡| 欧美高清一区| 女人av一区| 蜜桃av在线播放| 日本在线高清| 狠狠久久伊人| 国产精品腿扒开做爽爽爽挤奶网站| 日韩大片在线观看| 久久精品欧洲| 久久永久免费| 欧美日韩国产观看视频| 久久人人97超碰国产公开结果| 999精品在线| 欧美日韩精品一本二本三本 | 亚洲在线免费| 国精品一区二区| 国产精品大片免费观看| 美女久久一区| 99视频一区| 日本欧洲一区二区| 亚洲电影在线一区二区三区| 97精品国产一区二区三区| 精品无人区麻豆乱码久久久 | 中日韩男男gay无套| 日韩精品中文字幕第1页| 日本精品在线中文字幕| 欧美一区二区三区高清视频| 99视频精品| 国产日本亚洲| 欧美日韩国产一区二区在线观看| 日韩国产精品久久久久久亚洲| 日韩三级一区| 久久永久免费| 免费视频久久| 国产精品久久久久9999高清| 日韩欧美综合| 最新国产精品久久久| 国产一区二区三区视频在线| 欧美午夜精彩| 日韩在线电影| 亚洲综合在线电影| 清纯唯美亚洲综合一区| 美女视频黄免费的久久| 91精品国产成人观看| 不卡中文字幕| 久久天堂影院| 激情欧美国产欧美| 日韩不卡在线观看日韩不卡视频| 欧美日韩视频免费观看| 欧美日韩调教| 欧美精品高清| 久久av导航| 日韩综合一区二区三区| 久久国产中文字幕| 亚洲一区欧美二区| av中文资源在线资源免费观看| 亚洲三级国产| 亚洲激精日韩激精欧美精品| 日本一区二区三区视频在线看 | 日本亚洲三级在线| 国产色噜噜噜91在线精品| 99精品视频在线| 麻豆一区二区三区| 欧美日韩18| 视频一区二区不卡| 欧美福利专区| 99久久久久国产精品| 国产福利91精品一区二区| 国产精品视频3p| 日本成人中文字幕在线视频| 日本精品影院| 99久久www免费| 日韩精品免费视频一区二区三区| 日韩激情一区| 精品亚洲a∨| 国产 日韩 欧美 综合 一区| 国产一区二区精品久| 伊人国产精品| 日韩一区二区三区免费视频| 久热精品在线| 久久国产精品99国产| 快she精品国产999| 久热精品在线| 国产一级久久| 亚洲精品国产精品粉嫩| 亚洲精品中文字幕99999| 麻豆一区二区在线| 国产视频一区二区在线播放| 国产精品日本一区二区三区在线| 日本综合精品一区| 久久午夜精品一区二区| 日韩一区二区三区四区五区| 国产日韩一区二区三免费高清| 久久伊人亚洲| 色综合www| 免费欧美日韩| 国产精品一区二区三区美女 | 国产成人精品亚洲线观看| 中文字幕色婷婷在线视频 | 亚洲成人免费| 亚洲精品影视| 精品精品国产三级a∨在线| 久久97视频| 黑丝一区二区三区| 国产精品久久久免费| 日韩欧美一区二区三区免费看| 亚洲午夜av| 国产亚洲电影| 久久午夜精品| 成人看片网站| 日韩精品一区第一页| 精品亚洲美女网站| 亚洲欧洲国产精品一区| 国际精品欧美精品| 六月丁香综合| 精精国产xxxx视频在线播放| 亚洲欧洲美洲国产香蕉| 久久高清精品| 国产精品成人一区二区网站软件| 成人欧美一区二区三区的电影| 日本不卡一二三区黄网| 日本欧美在线看| 国产99久久久国产精品成人免费| 亚洲影院天堂中文av色| 亚洲午夜电影| 桃色一区二区| 三级一区在线视频先锋| 亚洲国内精品| 午夜精品成人av| 在线看片国产福利你懂的| 国产午夜一区| 亚洲精品三级| 男女性色大片免费观看一区二区| 国产高清一区二区| 亚洲精品网址| 欧美亚洲日本精品| 久久在线91|