oracle判斷為空是用is
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),烏什企業(yè)網(wǎng)站建設(shè),烏什品牌網(wǎng)站建設(shè),網(wǎng)站定制,烏什網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,烏什網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
null不是=null;
在oracle中=null一直都是返回false的。
另外最好加上exception判斷:
IF
:new.s_ID
IS
NULL
THEN
BEGIN
SELECT
c_id
into
:new.s_ID
from
classs
where
c_sid=:NEW.s_cid;
EXCEPTION
WHEN
no_data_found
THEN
SELECT
INTO
:new.s_ID
FROM
dual;
--或者其他操作
END;
END
IF;
當(dāng)在classs表中沒有找到對應(yīng)的記錄時(shí)不至于出錯(cuò),看你要怎么設(shè)計(jì)咯。
使用oracle進(jìn)行批量update更新數(shù)據(jù)的時(shí)候,可以在更新前進(jìn)行判斷,根據(jù)條件進(jìn)行批量更新
update tables_name t
set t.value1 = case
when t.value1 = '33020' then
'330200'
when t.value1 = '33021' then
'330210'
when t.value1 = '33022' then
'330221'
end
where t.value1 in ('33020', '33021', '33022');
有幾種不同的思路/技巧來處理:
1、類過程型:根據(jù)3類訂單,逐一處理
1.1、先“調(diào)換類”
1.2、再“退貨類”
sql略
1.3、最后“銷售類”
sql略
2、對“類型”進(jìn)行加權(quán)計(jì)算,放大差異,進(jìn)行數(shù)字化統(tǒng)計(jì)
-CASE ItemType WHEN '舊品回收' THEN 10000 WHEN '新品退貨' THEN 10 ELSE 0 END
這樣可以對“子表”進(jìn)行快速分組統(tǒng)計(jì),
然后據(jù)此更新“主表”的“訂單類型”字段。
oracle的if語句采用decode函數(shù)。
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value 等于if1時(shí),DECODE函數(shù)的結(jié)果返回then1,...,如果不等于任何一個(gè)if值,則返回else。
Oracle數(shù)據(jù)庫是對標(biāo)準(zhǔn)sql語言的過程化擴(kuò)展,因此產(chǎn)生了pl/sql語言。其中的if語句大量使用使得程序模塊化的功能方便實(shí)用?,F(xiàn)在要討論的是if語句的基本使用方法。
連接數(shù)據(jù)庫
請輸入用戶名: ?scott/123456
設(shè)置環(huán)境變量
SQL set serveroutput on
定義兩個(gè)字符串變量,然后賦值,接著使用if……then語句比較兩個(gè)字符串變量的長度,并輸出比較結(jié)果。
declare
a varchar(10);
b varchar(10);
begin
a:='beijing';
b:='guangdong';
if length(a)length(b)
then dbms_output.put_line('ab');
end if;
end;
過if……then……else語句實(shí)現(xiàn)只有年齡大于等于56歲,才可以申請退休,否則程序會提示不可以申請退休。
declare
a number(10);
begin
a:=x;
if a=56
then dbms_output.put_line('可以申請退休');
else dbms_output.put_line('不可以申請退休');
end if;
end;
制定一個(gè)月份數(shù)值,然后使用if……then……elsif語句判斷它所屬的季節(jié),并輸出季節(jié)信息。
declare
mon number(10);
begin
mon:=x;
if mon=3 or mon=4 or mon=5
then dbms_output.put_line('春節(jié)');
elsif mon=6 or mon=7 or mon=8 then dbms_output.put_line('夏季');
elsif mon=9 or mon=10 or mon=11 then dbms_output.put_line('秋季');
elsif mon=12 or mon=1 or mon=2 then dbms_output.put_line('冬季');
end if;
end;
制定一個(gè)季度數(shù)值,然后使用case語句判斷它所包含的月份信息并輸出。
declare
ss number(10);
begin
ss:=x;
case
when ss=1 then dbms_output.put_line('包含月份3,4,5');
when ss=2 then dbms_output.put_line('包含月份6,7,8');
when ss=3 then dbms_output.put_line('包含月份9,10,11');
when ss=4 then dbms_output.put_line('包含月份12,1,2');
end case;
end;
LOOP
BEGIN
FETCH id_cursor
INTO v1, v2, v3, v4;--把游標(biāo)里的四個(gè)值分別賦值到四個(gè)變量中
EXIT WHEN id_cursor%NOTFOUND;
IF v1 = 'xxx'--比如想判斷游標(biāo)中第一個(gè)變量的值,就這樣if一下
THEN
xxx
ELSE
xxx
IF v2 = 'xxx'--判斷第二個(gè)也一樣
THEN
xxx
ELSE
xxx
END IF;
EXCEPTION
xxx
END;
END LOOP;
CLOSE id_cursor;
記得自己聲明變量和游標(biāo)名字……
不知道你是問這個(gè)不