PLSQL條件(CASE WHEN)語句小應用
平時主要做維護方面工作,開發工作較少,沒怎麼認真的寫過幾行plsql程式碼。昨日一同事打電話諮詢一個小問題,當時覺得很簡單,但一時又想不出怎麼寫,後來靜下心來,終於把語句寫出來了。其實語句非常簡單,只不過是對plsql不熟而已,因此請開發大神莫要拍磚。看來以後還要多看一些開發類的書籍,以便不時之需啊。
去除一些細節,可以歸納為如下內容:表t包含兩個欄位,deptno欄位為部門編號,id欄位為身份證號。
其中ID有18位的,也有15位的,18位和15位的樣例如下:
18位身份證號:110108197211182718
15位身份證號:110108721118271
現在要統計每個部門人數,其中上述15位和18位的身份證號認為同一個人。
背景已經說清楚了,怎麼寫語句呢?很顯然要對id列進行一下簡單的條件處理,然後在進行統計,這裡就用到了case when語句。 具體語法如下
![](https://i.iter01.com/images/f7c085ab2916e4522fb605863e309b1bc0642644ed76280d229a2b025861e456.png)
根據上面的語法,我們可以基於t表寫一條簡單的語句:
t表資料記錄:
執行CASE WHEN語句後輸出結果如下,可以看到透過CASE WHEN語句成功的將18位身份證號轉換為了15位。
有了上述SQL後,剩下的就簡單了,經驗證結果正確。
去除一些細節,可以歸納為如下內容:表t包含兩個欄位,deptno欄位為部門編號,id欄位為身份證號。
點選(此處)摺疊或開啟
-
SQL> desc t
Name Null? Type
----------------------------------------- -------- ----------------------------
DEPTNO NUMBER
ID VARCHAR2(30)
18位身份證號:110108197211182718
15位身份證號:110108721118271
現在要統計每個部門人數,其中上述15位和18位的身份證號認為同一個人。
背景已經說清楚了,怎麼寫語句呢?很顯然要對id列進行一下簡單的條件處理,然後在進行統計,這裡就用到了case when語句。 具體語法如下
![](https://i.iter01.com/images/f7c085ab2916e4522fb605863e309b1bc0642644ed76280d229a2b025861e456.png)
根據上面的語法,我們可以基於t表寫一條簡單的語句:
點選(此處)摺疊或開啟
-
select deptno,
-
(CASE length(id)
-
WHEN 18 THEN substr(id,1,6)||substr(id,9,9)
- WHEN 15 THEN id
-
END) as id1
- from t
點選(此處)摺疊或開啟
- SQL> select * from t;
-
DEPTNO ID
-
---------- ------------------------------
-
1 110108197211182718
-
1 110108721118271
-
3 110109721118271
-
1 110101198201019713
- 2 110103198201019713
點選(此處)摺疊或開啟
-
SQL> select deptno,
-
(CASE length(id)
-
WHEN 18 THEN substr(id,1,6)||substr(id,9,9)
-
WHEN 15 THEN id
-
END) as id1
- from t;
-
DEPTNO ID1
-
---------- ------------------------------
-
1 110108721118271
-
1 110108721118271
-
3 110109721118271
-
1 110101820101971
- 2 110103820101971
點選(此處)摺疊或開啟
-
SQL> select deptno,count(distinct(id1)) from
-
(select deptno,
-
(CASE length(id)
-
WHEN 18 THEN substr(id,1,6)||substr(id,9,9)
-
WHEN 15 THEN id
-
END) as id1
-
from t)
- group by deptno;
-
DEPTNO COUNT(DISTINCT(ID1))
-
---------- --------------------
-
1 2
-
2 1
- 3 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29827284/viewspace-2138547/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- case when 語句
- 條件判斷語句 if case
- MySQL條件判斷IF,CASE,IFNULL語句詳解MySqlNull
- Oracle 條件索引 case when 報錯解決方案Oracle索引
- 條件語句
- SQL語句case when外用sum與count的區別SQL
- 『忘了再學』Shell流程控制 — 35、多分支case條件語句
- javaScript條件語句JavaScript
- GO 條件語句Go
- Go:條件控制語句Go
- 04.條件語句
- Python if else條件語句Python
- Python-條件語句和迴圈語句Python
- 6. Oracle開發和應用—6.4. PL/SQL語法—6.4.4. 條件語句(分支語句)OracleSQL
- oracle中的條件語句Oracle
- PL/SQL 條件控制語句SQL
- Swift 條件語句講解Swift
- python-條件控制(if語句)Python
- 學習Rust 條件語句Rust
- Python中if條件判斷語句怎麼用?Python
- drools中的條件 when
- Python條件語句與迴圈Python
- Python if else條件語句詳解Python
- Python 入門 :基本條件語句Python
- Django筆記二十三之case、when操作條件表示式搜尋、更新等操作Django筆記
- Python學習筆記3(條件語句+迴圈語句)Python筆記
- 7.Makefile中的條件語句
- SqlServer中迴圈和條件語句SQLServer
- shell程式設計之條件語句程式設計
- Python:條件分支 if 語句全講解Python
- php中條件語句的使用整理PHP
- 鴻蒙開發TypeScript語言:【條件語句】鴻蒙TypeScript
- C 語言教程:條件和 if...else 語句
- 雲端計算學習路線圖素材、課件,msyql中CASE WHEN語法
- 五個小技巧讓你寫出更好的 JavaScript 條件語句JavaScript
- 深入理解mongodb查詢條件語句MongoDB
- Go 條件語句 - Go 學習記錄Go
- 02 shell程式設計之條件語句程式設計
- AWK if(條件)語句與迴圈簡介