decode—對case的簡化

decode—對case的簡化

 

            現假設我們有一個用戶表t_user,其中擁有一個表示性別的字段gender,該字段對應的值可能爲01或者空,其中0表示“男”,1表示“女”,空表示“未填”。現需要我們在查詢t_usergender時不是顯示對應的01,而是顯示對應的文本,“男”或“女”。很顯然,我們可以使用case when else來實現,對應的SQL語句如下所示:

select case t.gender when 0 then '男' when 1 then '女' else '未填' end as gender from t_user;

 

            如果我們是使用的Oracle數據庫,那麼我們就沒必要寫複雜的case when語句了,Oracledecode函數可以幫我們實現同樣的功能。decode的語法如下:

decode(value,if-1,then-1,if-2,then-2,..,if-n,then-n,defaultValue)

  

            其表示如果value的值爲“if-1”則返回“then-1”,如果值爲“if-n”則返回“then-n”,如果value的值不在給定的if值裏面則將返回默認值defaultValue。所以使用decode時,上面的邏輯可以簡單的轉化爲如下這樣:

select decode(t.gender,0,'男',1,'女','未填') as gender from t_user;

  

            很明顯,下面的寫法比上面的寫法要簡單很多。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章