细说plsql中的空值表达式
最近寫sql的時(shí)候遇到了一些麻煩,一翻深究之后發(fā)現(xiàn)了關(guān)于空值表達(dá)式的規(guī)律,先看幾個(gè)例子:
?
declare
? a integer;
? b integer;
? c boolean;
begin
? a := 1;
? b := null;
? c := (a=b);
? if a = b then
??? dbms_output.put_line('print yes');
? else
??? dbms_output.put_line('print no');
? end if;
end;
結(jié)果是輸出:print no
?
再反過(guò)來(lái),寫成
declare
? a integer;
? b integer;
? c boolean;
begin
? a := 1;
? b := null;
? c := (a!=b);
? if a != b then
??? dbms_output.put_line('print yes');
? else
??? dbms_output.put_line('print no');
? end if;
end;
結(jié)果仍然是輸出:print no
?
規(guī)律第一條:if條件中如果使用null來(lái)判斷,那么結(jié)果總是為(非真)。
用dabug工具跟蹤后發(fā)現(xiàn),c的實(shí)際值既不是TURE也不是FALSE,也不是NULL,而是什么都沒(méi)有(變量跟蹤的值域里面空空如也,連“NULL”都不顯示)。
?
進(jìn)一步研究發(fā)現(xiàn):
(NULL and TRUE)、(TRUE and NULL)、(NULL or FALSE)、(FALSE or NULL)的值都是非真且什么都沒(méi)有;
(NULL or TRUE)、(TRUE or NULL)的值為TRUE;
(NULL and FALSE)、(FALSE and NULL)的值為FALSE;
?
規(guī)律第二條:and和or是有交換律的。
規(guī)律第三條:在and表達(dá)式中,只要有一個(gè)FALSE,就可以確定該表達(dá)式的值(為FALSE);在or表達(dá)式中,只要有一個(gè)TRUE,就可以確定該表達(dá)式的值(為TRUE);chucizhiwei
?
總結(jié)
以上是生活随笔為你收集整理的细说plsql中的空值表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 抗日战争解读八年侵华战争中国死了多少日本
- 下一篇: 开关机自动执行脚本方法[以及切换用户执行