【開發篇sql】 條件和表示式(七) decode,case when,connect by 語句
7,decode,case when,connect by 語句
decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,預設值)
case when 條件1 then 值1
when 條件n then 值n
else 值n+1
end
很多時候這兩個語句是類似的,比如:
SQL> select decode(dummy, 'X', 'xx', 'Y') decode_col,
2 case
3 when dummy = 'X' then
4 'xxxx'
5 else
6 'Z'
7 end case_col
8 from dual;
DECODE_COL CASE_COL
---------- --------
xx xxxx
不過一般來說decode用來處理匹配少量數值,且匹配條件比較簡單,如果過於複雜的條件則應該使用case語句。
Connect by ..start with通常用來做樹形查詢。舉個簡單的樹形結構例子,比如全國的機構組織架構,總部設為A,一級分部AXX(AAA,AAB),二級分部AXXXX(AAAAA,AAAAAB,AABAA,AABAB),建立資料如下:
SQL> create table t_test_organ (
2 id char(5),
3 p_id char(5),
4 name varchar2(40)
5 );
Table created
SQL> insert into t_test_organ values ('A','','總公司');
1 row inserted
SQL> insert into t_test_organ values ('AAA','A','分公司1');
1 row inserted
SQL> insert into t_test_organ values ('AAB','A','分公司2');
1 row inserted
SQL> insert into t_test_organ values ('AAAAA','AAA','支公司1');
1 row inserted
SQL> insert into t_test_organ values ('AAAAB','AAA','支公司2');
1 row inserted
SQL> insert into t_test_organ values ('AABAA','AAB','支公司3');
1 row inserted
SQL> insert into t_test_organ values ('AABAB','AAB','支公司4');
1 row inserted
SQL> select level, id, name
2 from t_test_organ
3 connect by prior id = p_id
4 start with id = 'A';
LEVEL ID NAME
---------- ----- ----------------------------------------
1 A 總公司
2 AAA 分公司1
3 AAAAA 支公司1
3 AAAAB 支公司2
2 AAB 分公司2
3 AABAA 支公司3
3 AABAB 支公司4
7 rows selected
(待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-662802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【開發篇sql】 條件和表示式(九) group by語句SQL
- PLSQL條件(CASE WHEN)語句小應用SQL
- 【開發篇sql】 條件和表示式(十) 特定的dmlSQL
- 【開發篇sql】 條件和表示式(六) Exists, not exsists,in ,not inSQL
- 【開發篇sql】 條件和表示式(五) 集合運算SQL
- 【開發篇sql】 條件和表示式(三) Null詳解SQLNull
- 【開發篇sql】 條件和表示式(八) 10g 正規表示式SQL
- 【開發篇sql】 條件和表示式(一) 資料型別SQL資料型別
- Oracle Decode()函式和CASE語句的比較Oracle函式
- 【開發篇sql】 條件和表示式(四) 幾個常見的偽列SQL
- Case表示式與decode()函式函式
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-搜尋CASESQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-簡單CASESQL
- 【開發篇sql】 條件和表示式(二) 資料型別的比較規則SQL資料型別
- SQL語句case when外用sum與count的區別SQL
- Django筆記二十三之case、when操作條件表示式搜尋、更新等操作Django筆記
- Swift學習筆記(二十七)——條件語句和Switch-case語句Swift筆記
- SQL CASE 表示式SQL
- MySQL條件判斷IF,CASE,IFNULL語句詳解MySqlNull
- PL/SQL 條件控制語句SQL
- SQL Case WhenSQL
- MySQL 的CASE WHEN 語句使用說明MySql
- ORACLE SQL開發where子句之case-whenOracleSQL
- Oracle 條件索引 case when 報錯解決方案Oracle索引
- 6. Oracle開發和應用—6.4. PL/SQL語法—6.4.4. 條件語句(分支語句)OracleSQL
- 通用函式和條件表示式函式
- 條件語句
- 【SQL 學習】case 表示式SQL
- SQL SERVER 條件語句的查詢SQLServer
- SQL語句與正規表示式SQL
- Python-條件語句和迴圈語句Python
- GO 條件語句Go
- javaScript條件語句JavaScript
- 把條件寫在單獨的if語句和放在for迴圈表示式中的區別
- 『忘了再學』Shell流程控制 — 35、多分支case條件語句
- Oracle case when改寫SQLOracleSQL
- SQL中的CASE WHEN使用SQL
- PL/SQL Case when應用SQL