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

数据库 Oracle
decode函数是Oracle PL/SQL的功能强大的函数之一,那么可不可以用宏来实现它呢?答案是可定的,本文我们主要就介绍了用SAS宏实现Oracle中的decode函数的过程,希望能够对您有所帮助。

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

先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在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函数的方法,本文我们就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. Oracle数据库学习笔记之表的联合查询
  2. Oracle数据库RMAN不完全恢复之基于SCN恢复
  3. Oracle数据库RMAN不完全恢复之基于时间恢复
  4. Oracle C#实现Oracle Text全文检索的简单例子
  5. Oracle数据库RMAN不完全恢复之基于日志序列号恢复
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2010-10-25 17:00:40

Oracle deco

2010-04-27 12:51:49

Oracle 函数de

2010-05-10 18:22:28

Oracle deco

2010-11-04 11:45:10

Oracle DECO

2023-10-26 11:03:50

C语言宏定义

2010-04-01 09:56:44

Oracle DECO

2009-03-24 13:04:55

汇总组织结构Oracle

2010-04-28 16:53:20

Oracle 函数

2010-11-18 15:46:41

Oracle Deco

2010-09-06 16:40:52

SQL函数

2010-04-26 16:51:11

Oracle Deco

2011-08-11 17:56:00

Oracle数据库decodesign

2011-09-01 10:09:31

OracleDECODE常用窗口函数

2011-07-13 14:02:42

OracleExcel

2011-07-22 13:22:10

Java.NETDataTable

2010-04-20 14:06:56

Oracle SQL语

2009-03-26 09:24:36

Oracle外键数据库

2010-10-25 10:10:08

oracle函数

2011-03-15 09:10:47

iptablesNAT

2011-03-15 14:26:23

iptablesNAT
点赞
收藏

51CTO技术栈公众号