掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Oracle數(shù)據(jù)庫中的decode函數(shù)是Oracle PL/SQL的常用函數(shù)之一,那么它的用途是什么呢?接下來我們就介紹這一過程以及如何用SAS宏來實現(xiàn)Oracle數(shù)據(jù)庫中的decode功能。

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設計、網(wǎng)站建設與策劃設計,新邱網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設十載,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:新邱等地區(qū)。新邱做網(wǎng)站價格咨詢:028-86922220
先構(gòu)造一個例子,假設我們想給智星職員加工資,其標準是:工資在8000元以下的加20%;工資在8000元或以上的加15%,通常的做法是,先選出記錄中的工資字段值? select salary into var-salary from employee,然后對變量var-salary用if-then-else或choose case之類的流控制語句進行判斷。 如果用decode函數(shù),那么我們就可以把這些流控制語句省略,通過SQL語句就可以直接完成。
SAS宏實現(xiàn)方法:
- %macro decode /PARMBUFF;
- %local i count ifn valuen countall currfeild valueelse;
- %let countall=%sysfunc(countw(&SYSPBUFF,%quote(,)));
- %let count=%eval((&countall-1)/2);
- %let currfeild=%scan(%quote(&SYSPBUFF),1);
- case &currfeild
- %do i=1 %to &count;
- %let ifn=%scan(%quote(&SYSPBUFF),%eval(&i*2));
- %let valuen=%scan(%quote(&SYSPBUFF),%eval(&i*2+1));
- when &ifn then &valuen
- %end;
- %if %eval(&countall>(&count+1)) %then %do;
- %let valueelse=%scan(%quote(&SYSPBUFF),&countall);
- else &valueelse
- %end;
- end
- %mend;
調(diào)用代碼如下,和oracle的調(diào)用方式和功能實現(xiàn)基本上都是一樣的。
- proc sql;
- create table test as
- select
- %decode(sex,"男",0,"女",1,2)
- as abc
- from sashelp.class;
- quit;
以上就是Oracle數(shù)據(jù)庫中decode函數(shù)的用途以及用SAS宏實現(xiàn)decode函數(shù)的方法,本文我們就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流