oracle的if語(yǔ)句采用decode函數(shù)。
10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有豐滿免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value 等于if1時(shí),DECODE函數(shù)的結(jié)果返回then1,...,如果不等于任何一個(gè)if值,則返回else。
Oracle數(shù)據(jù)庫(kù)是對(duì)標(biāo)準(zhǔn)sql語(yǔ)言的過(guò)程化擴(kuò)展,因此產(chǎn)生了pl/sql語(yǔ)言。其中的if語(yǔ)句大量使用使得程序模塊化的功能方便實(shí)用。現(xiàn)在要討論的是if語(yǔ)句的基本使用方法。
連接數(shù)據(jù)庫(kù)
請(qǐng)輸入用戶名: ?scott/123456
設(shè)置環(huán)境變量
SQL set serveroutput on
定義兩個(gè)字符串變量,然后賦值,接著使用if……then語(yǔ)句比較兩個(gè)字符串變量的長(zhǎng)度,并輸出比較結(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;
過(guò)if……then……else語(yǔ)句實(shí)現(xiàn)只有年齡大于等于56歲,才可以申請(qǐng)退休,否則程序會(huì)提示不可以申請(qǐng)退休。
declare
a number(10);
begin
a:=x;
if a=56
then dbms_output.put_line('可以申請(qǐng)退休');
else dbms_output.put_line('不可以申請(qǐng)退休');
end if;
end;
制定一個(gè)月份數(shù)值,然后使用if……then……elsif語(yǔ)句判斷它所屬的季節(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語(yǔ)句判斷它所包含的月份信息并輸出。
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;
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
不過(guò)還需要考慮一個(gè)問(wèn)題就是:如果B表中找不到記錄時(shí),flag如何賦值。
上面這個(gè)sql針對(duì)這個(gè)情況會(huì)賦值1
這個(gè)屬于oracle時(shí)間函數(shù)的用法
在oracle里,日期格式是一種特殊的東西
這里有一個(gè)日期轉(zhuǎn)換函數(shù)
select to_char(日期,'yyyy-mm-dd hh24:mi:ss') from tablename;
這里的to_char就是將日期型轉(zhuǎn)換成字符型的一個(gè)函數(shù),轉(zhuǎn)換成的格式就是
2010-08-23 17:51:20
當(dāng)然你可以將這個(gè)日期轉(zhuǎn)換成其他,如:
select to_char(日期,'yyyy-mm-dd') from tablename;
查出來(lái)的結(jié)果2010-08-23
所以你要根據(jù)這個(gè)日期來(lái)查東西就可以這么用
select * from tablename where to_char(日期,'yyyymmdd')between '20100801' and '20100823'
這個(gè)就是查日期8月1日到8月23日的數(shù)據(jù)
select * from tablename where to_char(日期,'yyyymmdd') = '20100801'
這個(gè)就是查8月1日的數(shù)據(jù)
其他不懂的你再問(wèn)吧
-------補(bǔ)充------
你把你寫(xiě)的東西粘貼一下,也好幫你分析啊
你后邊的" + model.Csrq + "參數(shù)傳進(jìn)來(lái)的是什么東西?
---------補(bǔ)充2-------
'yyyy-mm-dd 24hi:mi:ss'
這個(gè)地方錯(cuò)了,應(yīng)改成
'yyyy-mm-dd hh24:mi:ss'
不是24hi
如下參考:
1.從tblTest表中獲取itemcode='Item001'的記錄行,然后使用where的等式(=)條件,select*fromtblTestwhereitemcode='Item001'如下圖。
2. 如果從tblTest表中獲得itemnum 50的記錄行,則可以使用where greater than()條件。也可以使用大于或等于(=),select * from tblTest where itemnum 50,如下圖。
3.從tblTest表中獲取itemnum 50的記錄行,您可以使用where的小于()條件。小于條件也可以使用小于或等于(=),select * from tblTest where itemnum 50如下圖。
4.從tblTest表中獲取itemnum不等于itemprice的記錄行,可以使用where's not equal to (!等于或小于如下圖。
5.從tblTest表中獲取包含itemname中單詞“item”的記錄行,然后可以使用where的fuzzy(%)條件。左邊的百分號(hào)表示左邊可以是任何值,右邊的百分號(hào)表示右邊可以匹配任何值,百分號(hào)可以是兩邊的,如下圖。
oracle判斷為空是用is
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表中沒(méi)有找到對(duì)應(yīng)的記錄時(shí)不至于出錯(cuò),看你要怎么設(shè)計(jì)咯。
是存儲(chǔ)過(guò)程里面的 IF/ELSE ? 還是簡(jiǎn)單的 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
當(dāng)前名稱:oracle怎么做判斷,oracle條件中可以進(jìn)行判斷嗎
網(wǎng)址分享:http://jinyejixie.com/article38/dssoopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、品牌網(wǎng)站制作、Google、網(wǎng)站營(yíng)銷、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)