天天看點

decode—對case的簡化

decode—對case的簡化

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

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

            其表示如果value的值為“if-1”則傳回“then-1”,如果值為“if-n”則傳回“then-n”,如果value的值不在給定的if值裡面則将傳回預設值defaultValue。是以使用decode時,上面的邏輯可以簡單的轉化為如下這樣:

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