oracle中判斷語句怎么寫
是存儲過程里面的 IF/ELSE ? 還是簡單的 DECODE ?
SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 100;
5
6 IF testvalue > 100 THEN
7 dbms_*_line( '100+' );
8 ELSIF testvalue = 100 THEN
9 dbms_*_line( '100' );
10 ELSE
11 dbms_*_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
Oracle連接查詢和sql語句中的條件判斷有哪些
SELECT 1 UPLOAD, 0 SHENGJI, MR。
BUSI_ID, MASTER。PERSON_ID, MASTER。
ACNT_ID, MASTER。ID_NUM, MASTER。
NAME, MASTER。SEX, MR。
MIGRT_OUT_REGION, MR。OUT_OPERA_TIME, MR。
OUT_OPERA_ID, MR。IN_OPERA_TIME, MR。
MIGRATE_STATE, MR。MIGRT_IN_REGION, case when MR。
MIGRT_IN_REGION is null then '未選擇' else ARC。REGION_NAME end AS MIGRT_IN_REGION_NAME FROM ADPM_MIGRATE_CPA MASTER, ADPM_MIGRATE_INFO MR left join ADPM_REGION_CODE ARC on MR。
MIGRT_IN_REGION = ARC。REGION_CODE WHERE MASTER。
PERSON_ID = MR。PERSON_ID AND (MR。
MIGRATE_STATE = '10' OR MR。MIGRATE_STATE = '20' OR MR。
MIGRATE_STATE = '60'); SELECT 1 UPLOAD, 0 SHENGJI, MR。BUSI_ID, MASTER。
PERSON_ID, MASTER。ACNT_ID, MASTER。
ID_NUM, MASTER。 NAME, MASTER。
SEX, MR。MIGRT_OUT_REGION, MR。
OUT_OPERA_TIME, MR。OUT_OPERA_ID, MR。
IN_OPERA_TIME, MR。MIGRATE_STATE, MR。
MIGRT_IN_REGION, case when MR。MIGRT_IN_REGION is null then '未選擇' else ARC。
REGION_NAME end AS MIGRT_IN_REGION_NAME FROM ADPM_MIGRATE_CPA MASTER, ADPM_MIGRATE_INFO MR, ADPM_REGION_CODE ARC WHERE MASTER。 PERSON_ID = MR。
PERSON_ID AND (MR。MIGRATE_STATE = '10' OR MR。
MIGRATE_STATE = '20' OR MR。MIGRATE_STATE = '60') AND MR。
MIGRT_IN_REGION = ARC。 REGION_CODE(+);。
oracle中判斷語句怎么寫
是存儲過程里面的 IF/ELSE ? 還是簡單的 DECODE ?SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 100; 5 6 IF testvalue > 100 THEN 7 dbms_*_line( '100+' ); 8 ELSIF testvalue = 100 THEN 9 dbms_*_line( '100' ); 10 ELSE 11 dbms_*_line( '100-' ); 12 END IF; 13 14 END; 15 /100PL/SQL procedure successfully *> 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 733285B 2382C 5738ALL 741405。
oracle查詢語句條件判斷怎么寫
一個多條件判斷的sql:
select
*,
*_name,
*_host,
case
when *_type = 1 then 'System Manager'
when *_type = 2 then 'USER Manager'
end case,
case
when *_object_type = 1 then 'User'
when *_object_type = 2 then 'Role'
when *_object_type = 3 then 'Broker'
when *_object_type = 4 then 'QM Manager'
when *_object_type = 5 then 'User Group'
when *_object_type = 6 then 'Msg Flow'
when *_object_type = 7 then 'Queue'
end case
from esb_log_user_oper oper;
oracle中常用的一些語句有哪些
1、Oracle中,每一條記錄都有一個rowid,rowid在整個數據庫中是唯一的, rowid確定了每條記錄是在ORACLE中的哪一個數據文件、塊、行上。
2、在重復的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重復記錄中 那些具有最大rowid的就可以了,其余全部刪除。 實現方法: SQL> create table a ( 2 bm char (4), --編碼 3 mc varchar2(20) --名稱 4 ) 5 / 表已建立。
SQL> insert into a values('1111','1111'); SQL> insert into a values('1112','1111'); SQL> insert into a values('1113','1111'); SQL> insert into a values('1114','1111'); SQL> insert into a select * from a; 插入4個記錄。 SQL> commit; 完全提交。
SQL> select rowid,bm,mc from a; ROWID BM MC ------------------ ---- ------- 000000D5。0000。
0002 1111 1111 000000D5。 0001。
0002 1112 1111 000000D5。0002。
0002 1113 1111 000000D5。0003。
0002 1114 1111 000000D5。0004。
0002 1111 1111 000000D5。0005。
0002 1112 1111 000000D5。0006。
0002 1113 1111 000000D5。0007。
0002 1114 1111 查詢到8記錄。 查出重復記錄 SQL> select rowid,bm,mc from a where a。
rowid!=(select max(rowid) from a b where a。bm=b。
bm and a。mc=b。
mc); ROWID BM MC ------------------ ---- -------------------- 000000D5。 0000。
0002 1111 1111 000000D5。0001。
0002 1112 1111 000000D5。0002。
0002 1113 1111 000000D5。0003。
0002 1114 1111 刪除重復記錄 SQL> delete from a a where a。 rowid!=(select max(rowid) from a b where a。
bm=b。bm and a。
mc=b。mc); 刪除4個記錄。
SQL> select rowid,bm,mc from a; ROWID BM MC ------------------ ---- -------------------- 000000D5。 0004。
0002 1111 1111 000000D5。0005。
0002 1112 1111 000000D5。0006。
0002 1113 1111 000000D5。0007。
0002 1114 1111。
oracle數據庫條件判斷的查詢語句怎么寫
建表,測試數據: create table test(收款標志 int)insert into test values (1);insert into test values (1);insert into test values (1);commit;執行: select case when * = * then '未收款' when * = * then '已收款' when * <> 0 then '部分收款' end 收款狀態 from (select count(*) cnt from test) a, (select count(*) cnt from test where 收款標志 = 1) b, (select count(*) cnt from test where 收款標志 = 2) c, (select count(*) cnt from test where 收款標志 = 3) d結果: 然后你自己換點其他數據測試一下吧,思路就這么個思路了。
ORACLE中觸發器的判斷IF語句
加一行 NULL 即可
例如:
SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 200;
5
6 IF testvalue > 100 THEN
7
8 ELSIF testvalue = 100 THEN
9 dbms_*_line( '100' );
10 ELSE
11 dbms_*_line( '100-' );
12 END IF;
13
14 END;
15 /
ELSIF testvalue = 100 THEN
*
ERROR 位于第 8 行:
ORA-06550: 第 8 行, 第 9 列:
PLS-00103: 出現符號 "TESTVALUE"在需要下列之一時:
:= . ( @
% ;
ORA-06550: 第 14 行, 第 4 列:
PLS-00103: 出現符號 ";"在需要下列之一時:
if
上面的例子, 可以看出,如果 IF ELSE 里面, 沒有內容, 那么編譯不通過。
下面是 加一行 NULL 通過的例子:
SQL> DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 200;
5
6 IF testvalue > 100 THEN
7 NULL;
8 ELSIF testvalue = 100 THEN
9 dbms_*_line( '100' );
10 ELSE
11 dbms_*_line( '100-' );
12 END IF;
13
14 END;
15 /
PL/SQL 過程已成功完成。
轉載請注明出處華閱文章網 » oracle的判斷語句