一個多條件判斷的sql:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、虛擬主機、營銷軟件、網(wǎng)站建設(shè)、和碩網(wǎng)站維護、網(wǎng)站推廣。
select?
oper.opid,
oper.user_name,
oper.user_host,
case?
when?oper.oper_type?=?1??then?'System?Manager'?
when?oper.oper_type?=?2??then?'USER?Manager'
end?case,
case
when?oper.oper_object_type?=?1?then?'User'
when?oper.oper_object_type?=?2?then?'Role'
when?oper.oper_object_type?=?3?then?'Broker'
when?oper.oper_object_type?=?4?then?'QM?Manager'
when?oper.oper_object_type?=?5?then?'User?Group'
when?oper.oper_object_type?=?6?then?'Msg?Flow'
when?oper.oper_object_type?=?7?then?'Queue'
end?case
from?esb_log_user_oper?oper;
SELECT
distinct?id,state,name
FROM
table1?main
WHERE
NOT?EXISTS(?select?1?FROM?table1?sub?where?main.id=sub.id?AND?main.statesub.state);
未經(jīng)測試。。。純屬手寫,,如果以自己多年經(jīng)驗來說的話。。這段話應(yīng)該不會有多大問題。。。希望你自己仔細測試之后能夠提出寶貴意見!??!
是存儲過程里面的 IF/ELSE ? 還是簡單的 DECODE ?
SQL DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 100;
5
6 IF testvalue 100 THEN
7 dbms_output.put_line( '100+' );
8 ELSIF testvalue = 100 THEN
9 dbms_output.put_line( '100' );
10 ELSE
11 dbms_output.put_line( '100-' );
12 END IF;
13
14 END;
15 /
100
PL/SQL procedure successfully completed.
SQL SELECT
2 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) AS iten,
3 SUM(sale_money) AS money
4 FROM
5 sale_report
6 GROUP BY
7 ROLLUP(sale_item);
ITEN MONEY
------ ----------
A 733285
B 2382
C 5738
ALL 741405
SELECT a.id,
a.name,
a.dept,
CASE
WHEN (SELECT COUNT (1) cnt
FROM b
WHERE a.name = b.name AND b.TYPE '03') 0
THEN
ELSE
1
END
flag
FROM a
不過還需要考慮一個問題就是:如果B表中找不到記錄時,flag如何賦值。
上面這個sql針對這個情況會賦值1
oracle的if語句采用decode函數(shù)。
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value 等于if1時,DECODE函數(shù)的結(jié)果返回then1,...,如果不等于任何一個if值,則返回else。
Oracle數(shù)據(jù)庫是對標(biāo)準(zhǔn)sql語言的過程化擴展,因此產(chǎn)生了pl/sql語言。其中的if語句大量使用使得程序模塊化的功能方便實用。現(xiàn)在要討論的是if語句的基本使用方法。
連接數(shù)據(jù)庫
請輸入用戶名: ?scott/123456
設(shè)置環(huán)境變量
SQL set serveroutput on
定義兩個字符串變量,然后賦值,接著使用if……then語句比較兩個字符串變量的長度,并輸出比較結(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語句實現(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;
制定一個月份數(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;
制定一個季度數(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;
oracle的if語句采用decode函數(shù)。
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value 等于if1時,DECODE函數(shù)的結(jié)果返回then1,...,如果不等于任何一個if值,則返回else
示例:
比如,有個if語句如下
if(a==1){//如果a等于1,返回2,否則返回3
return?2;
}else{
return?3;
}
翻譯成DECODE如下
DECODE(a,1,2,3)
分享文章:oracle中判斷怎么寫,oracle判斷字段是否是數(shù)字
網(wǎng)站URL:http://www.rwnh.cn/article38/dssdesp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、品牌網(wǎng)站制作、搜索引擎優(yōu)化、定制網(wǎng)站、軟件開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)