平時在項目中常用到三目運算法,因為簡單的if,else 可以用三目運算來替代,這樣可以減少很多代碼量,今天有個同事在sql中遇到類似情況,想通過最簡潔的代碼來過濾,百度了一下,發現sql中有類似三目運算的情況,跟醬油爺說的case when差不多,記錄下來以備以后不時之需:
類似三目運算的sql:
select * from T_Op_ClassLearnerMapping where type in
(
Case
WHEN type=1 THEN '1' ELSE '2'
END
)
order by Type desc
case when還有一種用法,就是直接在數據庫中轉換,在頁面顯示別名,
比如有個字段是type類型,每個值代表不同含義,就可以直接通過case when來顯示中文,這種方式比較簡便
select *,type=Case
WHEN type=1 THEN '學員'
WHEN type=2 THEN '客戶'
WHEN type=3 THEN '教師'
ELSE 'null'
END
from T_Op_ClassLearnerMapping
PS,我在園子提的問題,各位大神提供的方式:
有對數據庫很精通,有對三目運算很精通的么?eg: var a=""; var b=a==""?True:False; 我想問一下,在數據庫中sql有類似的判斷嗎?
醬油興爺:我記得oracle的。 case when a=b and a is null then 'true' else 'false' end resault.
路過秋天:有isnull(條件,true則值A,false則值B) 具體去掃一下數據庫類型提供什么就用什么
青 蛙:如果判斷是否為空取不同值則有nvl和nvl2兩個函數,多個值做相應轉換可用decode。比較復雜的再用case when
PPS:秋天跟青蛙說的函數我都沒用過,所以先記着~~呵呵,不管怎樣,還是很謝謝他們的回答
