宏变量周围的单引号

时间:2013-12-10 00:15:52

标签: sql macros sas where

我有一个宏变量,如下所示有超过1个观察值。

%let age = 12,34,56;
%put &age;

现在我想在proc sql中的 where 参数中使用age。

proc sql;
select *
from family
where age in ("&age");
quit;

我使用了%bquote,%quote,%str()以及更多但尚未成功。

1 个答案:

答案 0 :(得分:3)

在没有任何引号的情况下尝试(我假设年龄是一个数字变量)。

如果age是一个字符,那么你可以像这样重写WHERE语句;

  where input(age, 8.) in (&age)

写作时

 "&age" 

SAS创建包含所有值和逗号的单个字符串,这不是我们对IN运算符所需的。

加。 这是我的代码:

%let age = 12,34,56;
%put &age;

data family;
  input age @@;
  datalines;
15 16 17 12 33 34 55 56
;
run;

proc sql;
  select *
  from family
  where age in (&age);
quit;