decode 對case的簡化

2021-08-27 19:08:11 字數 1155 閱讀 2509

decode—對case的簡化

現假設我們有乙個使用者表

t_user

,其中擁有乙個表示性別的字段

gender

,該欄位對應的值可能為0、

1或者空,其中

0表示「男」,

1表示「女」,空表示「未填」。現需要我們在查詢

t_user

的gender

時不是顯示對應的0和

1,而是顯示對應的文字,「男」或「女」。很顯然,我們可以使用

case when else

來實現,對應的

sql語句如下所示:

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

如果我們是使用的

oracle

資料庫,那麼我們就沒必要寫複雜的

case when

語句了,

oracle

的decode

函式可以幫我們實現同樣的功能。

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;

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

oracle中DECODE與CASE的用法區別

對於case與decode其實並沒有太多的區別,他們都是用來實現邏輯判斷。oracle的decode函式功能很強,靈活運用的話可以避免多次掃瞄,從而提高查詢的效能。而case是9i以後提供的語法,這個語法更加的靈活,提供了if then else的功能。想要知道他們具體的用法,我們先來看看他們的語法...

Decode函式的用法,CASE語句的用法?

case語句的用法?oracle用法很簡單 select last name,job id,salary case job id when it prog then 1.10 salary when st clerk then 1.15 salary when sa rep then 1.20 sa...

case表示式和decode函式

1.用case表示式做等值判斷 格式 case 表示式 when 值1 then 返回值1 when 值2 then 返回值2 else 預設返回值 end 示例 查詢員工編號,姓名,部門編號,部門名稱 部門名稱 30 sale 20 etc 10 jxb 其他 icss select empno ...