使用带有宏变量的where条件的SAS SQL
我在SAS中有一个使用带有宏变量的where条件的SAS SQL,sql,sas,where-clause,Sql,Sas,Where Clause,我在SAS中有一个proc sql过程,其中我的where子句应该是动态的(ID号集将在将来更新) 对于一个独特的角色条件,我可以做如下事情: %let value1=A ; proc sql ; select * from sashelp.class where upcase(name) contains symget('value1'); ; quit; 但是,如何能同样检查多个数字?我怎样才能完成以下工作 %let value2= (11,12,13); proc sql ;
proc sql
过程,其中我的where
子句应该是动态的(ID号集将在将来更新)
对于一个独特的角色条件,我可以做如下事情:
%let value1=A ;
proc sql ;
select * from sashelp.class
where upcase(name) contains symget('value1');
;
quit;
但是,如何能同样检查多个数字?我怎样才能完成以下工作
%let value2= (11,12,13);
proc sql ;
select * from sashelp.class
where age not in symget('value2');
;
quit;
在执行之前解析VALUE2的值
%let value2= (11,12,13);
proc sql ;
select * from sashelp.class
where age not in &value2
;
quit;
真管用!为了社区的利益,为什么我们需要为字符使用
symget
和为数字使用&
就可以了?如果将字符值括在引号“&value1”中,则这两种情况都不需要使用symget。所有宏变量都是字符串。