a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

Oracle中的NULL和空字符串

發(fā)布時(shí)間:  2012/8/30 16:47:18

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

例1:

declare 

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


 

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

if(v_b1) then          --把v_b1改成not v_b1結(jié)果都一樣.也就是v_b1和把它取反都不會(huì)是true
dbms_output.put_line('v_b1 equal true');
else
dbms_output.put_line('v_b1 is not true');--輸出這個(gè)結(jié)果
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 則輸入這條語(yǔ)句
end if;
end;


 

例2:

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

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

但如果我們這樣創(chuàng)建表

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

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


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



看了上面兩個(gè)例子是不是有點(diǎn)暈了啊,其實(shí)我們可以這樣理解.既然null是個(gè)不確定的類型,就可以轉(zhuǎn)變成任何類型中的任何值.就像C#中的object類型.它是任何類型的父類.可以代表任何類型.我們可以在運(yùn)行程序時(shí)再去動(dòng)態(tài)確定它的具體類型.那么null如果是處在一個(gè)條件判斷條件中得讓它取特定類型的所有值去進(jìn)行判斷.如果結(jié)果都為真才為真.

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

這樣來(lái)理解了null就不難明白為什么我們?cè)谝粋(gè)表中插入一個(gè)null值.但我們不能通過(guò)判斷條件=null來(lái)查詢.不過(guò)Oracle提供了關(guān)鍵字is來(lái)判斷一個(gè)值是否是null.

例2中第二種情況是有點(diǎn)反常.我們就當(dāng)作如果什么都不讓用戶插入,但建個(gè)表沒(méi)啥意義.所以不這樣
 

至于Oracle后臺(tái)是怎么存儲(chǔ)null值和操作null值的就不清楚了啊.


 

2.null和空字符串



其實(shí)空字符串和其他字符的操作是一樣的.只是用它的時(shí)候眼神要好點(diǎn),別搞錯(cuò)了.舉個(gè)例子

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

insert into arwen values(' ');--注意引號(hào)中是一個(gè)空格.如果是兩個(gè)空格會(huì)出錯(cuò)的,因?yàn)槭莾蓚(gè)字符了.

select * from arwen where ename = ' '; --返回一行.這里引號(hào)中也必須是一個(gè)空格.

如果是''也就是引號(hào)中沒(méi)空格.那插入它時(shí)Oracle默認(rèn)把它變成null了.所以如果引號(hào)中沒(méi)空格我們就不能叫它空字符串了啊.不知道叫啥好啊.覺(jué)得有null了它好像有點(diǎn)多余

例如create table arwen(eno int);

insert into arwen values(44);

insert into arwen alues(''); --引號(hào)是沒(méi)有空格
 

insert into arwen alues(null);

這上面三條語(yǔ)句都會(huì)成功插入.

雖然''被默認(rèn)轉(zhuǎn)換成null但我們不能用is '' 或=''來(lái)用它

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

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


 

3.我們要用到null時(shí)常會(huì)用到函數(shù)nvl函數(shù).



就是如果碰到哪個(gè)地方是null就把它轉(zhuǎn)換成其他的東東

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

ename如果是null就轉(zhuǎn)換成11如果不是null就原樣輸出


 


 

4.使用null時(shí)注意



在用avg,max,min這些函數(shù)時(shí)會(huì)把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;--結(jié)果為1.5.這是因?yàn)楹雎缘鬾ull了不然應(yīng)該是1的

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

如果在排序中會(huì)把null當(dāng)作最大值處理.就像無(wú)窮大一樣


 

在往表中插入數(shù)據(jù)時(shí)如果某列沒(méi)有插入值就讓它為null,這對(duì)用戶來(lái)說(shuō)是非常方便的.但在其他地方用它好像沒(méi)太大必要.所以盡量別用好了.

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


本文出自:億恩科技【www.ibaoshan.net】


 

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

if(v_b1) then          --把v_b1改成not v_b1結(jié)果都一樣.也就是v_b1和把它取反都不會(huì)是true
dbms_output.put_line('v_b1 equal true');
else
dbms_output.put_line('v_b1 is not true');--輸出這個(gè)結(jié)果
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 則輸入這條語(yǔ)句
end if;
end;


 

例2:

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

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

但如果我們這樣創(chuàng)建表

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

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


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



看了上面兩個(gè)例子是不是有點(diǎn)暈了啊,其實(shí)我們可以這樣理解.既然null是個(gè)不確定的類型,就可以轉(zhuǎn)變成任何類型中的任何值.就像C#中的object類型.它是任何類型的父類.可以代表任何類型.我們可以在運(yùn)行程序時(shí)再去動(dòng)態(tài)確定它的具體類型.那么null如果是處在一個(gè)條件判斷條件中得讓它取特定類型的所有值去進(jìn)行判斷.如果結(jié)果都為真才為真.

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

這樣來(lái)理解了null就不難明白為什么我們?cè)谝粋(gè)表中插入一個(gè)null值.但我們不能通過(guò)判斷條件=null來(lái)查詢.不過(guò)Oracle提供了關(guān)鍵字is來(lái)判斷一個(gè)值是否是null.

例2中第二種情況是有點(diǎn)反常.我們就當(dāng)作如果什么都不讓用戶插入,但建個(gè)表沒(méi)啥意義.所以不這樣
 

至于Oracle后臺(tái)是怎么存儲(chǔ)null值和操作null值的就不清楚了啊.


 

2.null和空字符串



其實(shí)空字符串和其他字符的操作是一樣的.只是用它的時(shí)候眼神要好點(diǎn),別搞錯(cuò)了.舉個(gè)例子

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

insert into arwen values(' ');--注意引號(hào)中是一個(gè)空格.如果是兩個(gè)空格會(huì)出錯(cuò)的,因?yàn)槭莾蓚(gè)字符了.

select * from arwen where ename = ' '; --返回一行.這里引號(hào)中也必須是一個(gè)空格.

如果是''也就是引號(hào)中沒(méi)空格.那插入它時(shí)Oracle默認(rèn)把它變成null了.所以如果引號(hào)中沒(méi)空格我們就不能叫它空字符串了啊.不知道叫啥好啊.覺(jué)得有null了它好像有點(diǎn)多余

例如create table arwen(eno int);

insert into arwen values(44);

insert into arwen alues(''); --引號(hào)是沒(méi)有空格
 

insert into arwen alues(null);

這上面三條語(yǔ)句都會(huì)成功插入.

雖然''被默認(rèn)轉(zhuǎn)換成null但我們不能用is '' 或=''來(lái)用它

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

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


 

3.我們要用到null時(shí)常會(huì)用到函數(shù)nvl函數(shù).



就是如果碰到哪個(gè)地方是null就把它轉(zhuǎn)換成其他的東東

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

ename如果是null就轉(zhuǎn)換成11如果不是null就原樣輸出


 


 

4.使用null時(shí)注意



在用avg,max,min這些函數(shù)時(shí)會(huì)把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;--結(jié)果為1.5.這是因?yàn)楹雎缘鬾ull了不然應(yīng)該是1的

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

如果在排序中會(huì)把null當(dāng)作最大值處理.就像無(wú)窮大一樣


 

在往表中插入數(shù)據(jù)時(shí)如果某列沒(méi)有插入值就讓它為null,這對(duì)用戶來(lái)說(shuō)是非常方便的.但在其他地方用它好像沒(méi)太大必要.所以盡量別用好了.

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


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

服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線

     
     
    国产美熟女乱又伦AV果冻传媒| 人体艺术大胆图片| 被窝里的翁憩二十六| 亚洲CHINESE男同志GAY| 人妻蜜と1~4中文字幕月野定规| 精产国品一二三产品在哪| 爆乳2把你榨干哦在线观看| 亚洲人成人一区二区在线观看| 日韩AV片免费播放| 精品国产乱码一区二区三区APP| 擦老太BBB擦BBB擦BBB擦| 亚洲日韩国产AV无码无码精品| 少妇18p一区二区三区| 乱码一线二线三线新区破解欧| 国产精品无码翘臀在线观看| A级毛片免费观看网站| 亚洲精品无码久久久久AV麻豆| 日韩人妻无码一区二区三区99 | 中国VODAFONE粗暴| 午夜人性色福利无码视频在线观看| 欧美成人高清WW| 黑人异族巨大巨大巨粗| 成人精品视频一区二区三区不卡| 亚洲综合另类小说色区色噜噜| 天天综合网网欲色| 欧美丰满熟妇XXXX性大屁股| 精品国产乱码久久久软件下载| 二男一女一起日B| 12一14性XXXXX国产| 亚洲AV综合色区无码另类小说| 日韩欧国产精品一区综合无码| 看成年女人午夜毛片免费| 国产人澡人澡澡澡人碰视频| 办公室的交易HD中文字幕| 一区二区伊人久久大杳蕉| 午夜宅男在线永久免费观看网| 人妻互换一二三区激情视频| 久久久久久AV无码免费网站下载| 国产成人精品无码青草| 99久久精品国产一区二区蜜芽| 亚洲国产欧美在线人成大黄瓜| 手机看片福利永久| 欧美精产国品一二三产品| 久久高清超碰AV热热久久| 国产精品久久精品国产| А√天堂资源地址在线下载| 野花香电视剧全集免费观看| 亚欧免费无码AⅤ在线观看蜜桃| 日产无人区一线二线三线最新版 | 黑人玩弄人妻1区二区| 处破初破苞一区二区三区| 中文无码人妻有码人妻中文字幕| 亚洲AV永久综合在线观看尤物| 色综合天天视频在线观看| 欧美 日韩 国产 成人 在线观 | FREE俄罗斯免费视频| 亚洲中文精品久久久久久不卡| 午夜无码性爽快影院6080| 日韩激情无码免费毛片| 女の乳搾りです在线观看| 精品人妻视频一区二区三区 | 欧美人与牲动交a欧美精品| 久久精品AⅤ无码中文字字幕重口 久久精品AⅤ无码中文字字幕蜜桃 | 天堂√最新版中文在线天堂 | JJZZJJZZ高潮喷水妇女| 一本一道久久综合狠狠老| 亚洲AV无码成人YELLOW| 太深太粗太大太猛太爽了视频 | 四虎影视新紧急入口| 强开小婷嫩苞又嫩又紧韩国视频| 久久亚洲精品无码观看| 黑人大战中国AV女叫惨了| 国产69久久精品成人看| ZOOM人与ZOOM视频| 在我们寝室当寄吧套子怎么样| 亚洲国产精品久久久就秋霞| 无码精品人妻一区二区三区老牛| 日产乱码一二三区别免费演员表| 女人爽到高潮的免费视频| 久久无码人妻一区二区三区| 姬小满开叉裙穿搭注意事项| 国产精品久久国产三级国| 成人网站在线进入爽爽爽| AV无码一区二区三区| 在出租屋里被强高H| 亚洲人成人无码WWW影院| 亚洲ⅤA中文字幕无码| 贪婪洞窟H5双修流攻略小说| 日本另类ΑV欧美另类AⅤ| 男人猛躁进女人免费播放| 久久久久亚洲AV成人片丁香| 黑人60厘米全进去了| 国产精品无码免费播放| 菲律宾一大学发生爆炸| 凹厕所XXXXBBBB偷拍视频| 69无人区乱码一二三四区别| 艳妇乳肉豪妇荡乳AV无码福利| 亚洲国产精品特色大片观看完整版| 无码专区一ⅤA亚洲V天堂| 私はあなたのおさんです怎么读 | 四川丰满少妇A级毛片| 日本三级强伦姧护士HD | 日产乱码一二三区别免费必看| 欧美体内SHE精视频| 免费AV资源网站| 久久久久久久精品无码AV少妇 | Chinese宅妇内射AV| 中文在线最新版天堂8| 夜夜天天噜狠狠爱2019| 亚洲精品自偷自拍无码| 性色AV无码久久一区二区三区| 天天爱天天做天天做天天吃中文 | 午夜三级A三级三点自慰| 天堂√最新版中文在线天堂| 日日猛噜噜狠狠扒开双腿小说| 秋霞网一区二区三区| 欧美成人看片黄A免费看| 毛片亚洲AV无码精品国产午夜| 久久久久亚洲AV成人片| 久久AV无码AV高潮AV喷吹| 火柴人战争遗产破解版| 国产在线拍偷自揄拍无码| 国产啪精品视频网站免费| 国产精品JK白丝AV网站| 顶级CSGO大片| 成人爽A毛片在线视频淮北| 宝贝你夹得太紧了我都要断了| JIZZ中国女人奶水多| CHINESE国产AVVIDEOXXXX实拍| 18禁超污无遮挡无码免费游戏 | 亚洲熟妇一区二区三区| 亚洲精品无码你懂的| 亚洲第一无码AV播放器下载| 亚洲AV性色精品国产小电影| 亚洲AV鲁丝片在线观看| 性极强的岳让我满足| 无遮挡又黄又刺激的视频 | 亚洲国产精品久久久久婷婷软件| 亚洲AV无码一区东京热久久| 亚洲AV日韩精品一区二区三区| 性色ΑV一二三天美传媒| 新婚少妇下面真紧| 亚洲AⅤ无码乱码在线观看性色 | 欧美一级 片内射黑人| 女教师の爆乳BD在线观看 | 日产乱码一二三区别免费观看 | 无码少妇丰满熟妇一区二区| 无码精品人妻一区二美国区三区| 无码夫の前で人妻を犯す| 无码AV免费一区二区三区四区 | 国产精品亚洲А∨无码播放不卡| 国产精品久久久久精品三级APP| 国产精品99精品无码视亚| 国产YEEZY451| 国产精品国产精品国产专区不卡| 国产精品成人一区无码| 国产精品永久免费| 国产无套内射又大又猛又粗又爽 | 中文字幕亚洲无线码| 2823理论片在线播放| 97超碰精品成人国产| CHINESE FREE 高清| 爱丫爱丫影院在线观看免费| 被黑人下药做得受不了| 成人精品一区二区三区电影| 荡公乱妇第1章方情95| 丰满浓毛的大隂户自慰| 国产00高中生在线无套进入| 国产精品VA在线观看无码 | 精品久久久久成人码免费动漫| 精品人妻无码区二区三区密桃| 久久99热精品免费观看| 久久毛片免费看一区二区三区 | 中文在线官网在线| 91精品人妻人人做人碰人人爽| AV人摸人人人澡人人超碰| А天堂中文地址在线| 爆乳邻居肉欲中文字幕| 成熟交BGMBGMBGM| 国产AV无码专区亚洲版综合| 国产精品爽爽V在线观看无码| 国产综合在线观看| 精品人妻潮喷久久久又裸又黄| 久久久久久精品免费免费英国 | 久久久精品人妻一区二区三区四| 久久伊人少妇熟女大香线蕉| 免费观看人成影片| 欧美人与动性XXXXX交性| 人人人爽人人澡人人高潮| 日本一卡二卡四卡无卡国产| 少妇激情A∨一区二区三区| 无码视频一区二区三区| 亚洲AV无码成人精品区伊人小说 | 人妻无码AⅤ中文字幕日韩| 搡老女人老妇老熟女HHD| 玩弄人妻熟妇性色AV少妇| 亚洲AV无码乱码一级毛片孕妇| 亚洲区综合区小说区激情区| 曰批全过程免费视频观看 | 无码人妻精品中文字幕不卡|