使用带有宏变量的where条件的SAS SQL

使用带有宏变量的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 ;

我在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  ;
    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。所有宏变量都是字符串。