oracle中關(guān)于case?when?then的使用
關(guān)于case when then的使用
1.首先創(chuàng)建兩個(gè)表emp,emp_bonus如下:
(1)emp_bonus:
>
(2)emp:
2.首先對emp_bonus表進(jìn)行操作:
select emp_bonus.*,(case when empno=7934 then 0 when empno=7839 then 1 else -1 end) as asd from emp_bonus
效果:
可見case when then 的作用或者效果是根據(jù)條件重新添加了一列!其實(shí)這一列可以的多表關(guān)聯(lián)中進(jìn)行其他有效的操作。
3.如,員工的獎(jiǎng)金根據(jù)emp_bonus中的type來計(jì)算,type=1則工資的10%作為獎(jiǎng)金,type=2則工資的20%作為獎(jiǎng)金,以此類推……現(xiàn)在要求返回10號(hào)部門的員工工資及獎(jiǎng)金:
select e.deptno,e.deptno,e.ename,e.sal, (e.sal*case when eb.type=1 then 0.1 when eb.type=2 then 0.2 when eb.type=3 then 0.3 end) as bonus from emp e inner join emp_bonus eb on(e.empno=eb.empno) and e.deptno=10
可見,兩表關(guān)聯(lián)后的bonus列進(jìn)行了操作……
Oracle語句中case when起別名
配合前端框架,前后臺(tái)查出來的數(shù)據(jù)是經(jīng)常配合的,比如一個(gè)黨員信息列表,針對性別字段,后臺(tái)查出來的是0或者1代表男和女,一種方式是前臺(tái)針對0,1進(jìn)行文字轉(zhuǎn)換,像easyui和layui等都提供相應(yīng)的js寫法。
easyui 在datagrid 的columns:數(shù)組里面使用formatter函數(shù)實(shí)現(xiàn)。
{width : '5%',title : '性別',field : 'sex',sortable : true,formatter:function(value,row,index){ switch (value) { case '1': return '<font >男</font>'; break; default: return '<font >女</font>'; break; } }},
在layui里可以使用layui模板語法實(shí)現(xiàn)。
window.demoTable = table.render({ elem : '#idTest', id : 'idTest', url : '<%=path%>/partyMember/getPartyMembersByOrgCode', width : 1500, height : 650, cols : [ [ //標(biāo)題欄 {checkbox : true,LAY_CHECKED : false,filter : 'test'}, {field : 'PM_CODE',title : '黨員編號(hào)',width : 220,sort : true,align : 'center'}, {field : 'NAME',title : '黨員姓名',width : 120,sort : true,align : 'center'}, {field : 'SEX',title : '性別',width : 80,sort : true,align : 'center',templet:'#sexTpl'}, {field : 'MOBILE_NO',title : '手機(jī)號(hào)碼',width : 220,sort : true,align : 'center'}, {field : 'CODE',title : '組織編碼',width : 220,sort : true,align : 'center'}, {field : 'ORG_NAME',title : '所在支部',width : 200,sort : true,align : 'center'}, {fixed : 'right',title : '操作',width : 200,align : 'center',toolbar : '#barDemo'} ] ], page : true //是否顯示分頁 , limits : [ 15, 20,50, 100 ], limit : 15 //每頁默認(rèn)顯示的數(shù)量 }); <script type="text/html" id="sexTpl"> {{# if(d.SEX ==0){ }} 女 {{# } else { }} 男 {{# } }} </script>
第二種方法:直接數(shù)據(jù)庫里返回文字信息。
在這種情況下遇到了case when 語句別名的問題,在此博客記錄下,希望各位也留意。
剛開始寫的語句
select name,case sex when '0' then '男' else '女' end as '性別' from t_member_base where mobile_tel='13707979894'
報(bào)如下錯(cuò)誤:
ORA-00923: 未找到要求的 FROM 關(guān)鍵字
00923. 00000 - "FROM keyword not found where expected"
*Cause:
*Action:
行 1 列 60 出錯(cuò)
查了相關(guān)資料才知道,oracle case when 取別名是不能帶as的,去掉as即可。
而且性別還不能帶單引號(hào),一般程序里都是取英文,如果是漢子,還不能帶單引號(hào),直接漢子即可,說明下。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ORACLE學(xué)習(xí)筆記-添加更新數(shù)據(jù)函數(shù)篇
Oracle系統(tǒng),即是以O(shè)racle關(guān)系數(shù)據(jù)庫為數(shù)據(jù)存儲(chǔ)和管理作為構(gòu)架基礎(chǔ),構(gòu)建出的數(shù)據(jù)庫管理系統(tǒng)。世界第一個(gè)支持SQL語言的商業(yè)數(shù)據(jù)庫,定位于高端工作站,以及作為服務(wù)器的小型計(jì)算機(jī),Oracle公司的整個(gè)產(chǎn)品線包括數(shù)據(jù)庫服務(wù)器、企業(yè)商務(wù)應(yīng)用套件、應(yīng)用開發(fā)和決策支持工具2014-08-08Oracle創(chuàng)建自增表分區(qū)之按月、按天自增表分區(qū)步驟詳解
這篇文章主要給大家介紹了關(guān)于Oracle創(chuàng)建自增表分區(qū)之按月、按天自增表分區(qū)的相關(guān)資料,Oracle表對數(shù)據(jù)進(jìn)行月度分區(qū)是一種將數(shù)據(jù)分組的有效方法,此方法是將數(shù)據(jù)根據(jù)它們所屬時(shí)間段將其存儲(chǔ)為不同分區(qū),需要的朋友可以參考下2023-11-11探討:Oracle數(shù)據(jù)庫查看一個(gè)進(jìn)程是如何執(zhí)行相關(guān)的實(shí)際SQL語句
本篇文章是對Oracle數(shù)據(jù)庫查看一個(gè)進(jìn)程是如何執(zhí)行相關(guān)的實(shí)際SQL語句進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05使用JDBC4.0操作Oracle中BLOB類型的數(shù)據(jù)方法
這篇文章主要介紹了使用JDBC4.0操作Oracle中BLOB類型數(shù)據(jù)的方法,我們需要使用ojdbc6.jar包,本文介紹的非常詳細(xì),需要的朋友可以參考下2016-08-08日常收集整理oracle trunc 函數(shù)處理日期格式(很實(shí)用)
關(guān)于oracle trunc函數(shù)小編日常收集整理了些,下面把oracle trunc 函數(shù)處理日期格式的相關(guān)介紹分享給大家,感興趣的朋友參考下2015-10-10