如何用SAS宏实现Oracle中的decode函数?

Oracle数据库中的decode函数是Oracle PL/SQL的常用函数之一,那么它的用途是什么呢?接下来我们就介绍这一过程以及如何用SAS宏来实现Oracle数据库中的decode功能。

创新互联公司是一家专注于成都网站设计、网站建设与策划设计,新邱网站建设哪家好?创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:新邱等地区。新邱做网站价格咨询:028-86922220

先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的加20%;工资在8000元或以上的加15%,通常的做法是,先选出记录中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用decode函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。

SAS宏实现方法:

 
 
 
  1. %macro decode /PARMBUFF;
  2. %local i count ifn valuen countall currfeild valueelse;
  3. %let countall=%sysfunc(countw(&SYSPBUFF,%quote(,)));
  4. %let count=%eval((&countall-1)/2);
  5. %let currfeild=%scan(%quote(&SYSPBUFF),1);
  6. case &currfeild 
  7. %do i=1 %to &count;
  8. %let ifn=%scan(%quote(&SYSPBUFF),%eval(&i*2));
  9. %let valuen=%scan(%quote(&SYSPBUFF),%eval(&i*2+1));
  10. when &ifn then &valuen
  11. %end;
  12. %if %eval(&countall>(&count+1)) %then %do;
  13. %let valueelse=%scan(%quote(&SYSPBUFF),&countall);
  14. else &valueelse
  15. %end;
  16. end
  17. %mend;

调用代码如下,和oracle的调用方式和功能实现基本上都是一样的。

 
 
 
  1. proc sql;
  2. create table test as 
  3. select 
  4. %decode(sex,"男",0,"女",1,2)
  5. as abc
  6. from sashelp.class;
  7. quit;

以上就是Oracle数据库中decode函数的用途以及用SAS宏实现decode函数的方法,本文我们就介绍到这里了,希望本次的介绍能够对您有所收获!

本文题目:如何用SAS宏实现Oracle中的decode函数?
转载源于:http://www.hantingmc.com/qtweb/news6/512256.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联