case可以根據查詢出來的列值選擇性的改變值。舉個栗子,有乙個簡單的表如學生表,學生表有個性別字段,但是這個字段型別時char(1)型別的,而想要取出的性別是中文顯示的對應關係如下:(1:男,2:女,3:其他)這樣的情況可以使用case 解決:現在假設要取出student表中的name,id,gender,(gender欄位使用對應的中文替代):
selectst.name,
st.name,
case
st.gender
when'1
'then'男
'when'2
'then'女
'when'3
'then'其他
'end
from
student st
此外case when還有個很好的用途,就是可以在某個欄位為空時取另外的字段
如下:
selectt.username
asname,
case
when ( t.alias_name is
null
or length( t.alias ) =
0 ) then
t.username
when ( t.alias_name is
notnull
and length( t.alias_name ) >
0 ) then
t.alias_name
else
''end
asaliasname
from
forum_user t
where
user_grade ='
normal
'
上面sql作用時,forum_user表中取user_grade為normal的username、alias_name欄位。當ailas_name為空或者空字元長度為0時取username,當alias_name不為空且字元長度大於0時取alias_name,否則返回空字元。
Oracle資料庫UNION語句的使用方法
當若干個業務邏輯不同但輸出字段相同的sql語句需要聯合查詢單一結果時,可使用union語句,如 select personid as id,cnname as al,3 as gid from a union select f pid as id,cnname as al,group as gid ...
資料庫case 和 decode 區別
7.在員工表中查詢出員工的工資,並計算應交稅款 如果工 資小於1000,稅率為0,如果工資大於等於1000並小於2000,稅率為10 如果工資大於等於2000並小於3000,稅率為 15 如果工資大於等於3000,稅率為20 select sal case when sal 1000 then 0 ...
plsql 連線oracle資料庫的2種方式
該檔案在instantclient資料夾中,我直接將instantclient拷貝到了plsql的根目錄下 路徑 修改 該檔案用於配置資料庫連線位址,配置好後,訪問該資料庫不再需要通過ip port instance,可以直接通過別名來訪問該資料庫 資料庫訪問位址別名 隨便起 database te...