我需要在宏中使用以下代码:
proc sql;
select name
into :lista
separated by ' '
from dictionary.columns
where libname='LABO2'
and name like 't1_%'
and name like "%5";
quit;
但是当我写道:
%macro prue(numero);
proc sql;
select name
into :listas
separated by ' '
from dictionary.columns
where libname='LABO2'
and name like 't1_%'
and name like "% &numero.";
quit;
%put "% &numero";
%mend;
%prue(5);
我得到了类似的'%5'当我需要'%5'。如果我删除了
中的空白空间like "%&numero."
我没有得到变量值5,我得到了'%& numero'。所以我不知道如何解决这个问题。
谢谢!
答案 0 :(得分:1)
您需要使用宏引用来转义百分号和/或将其与宏变量分开。许多解决方案之一:
%let text=fred;
proc sql;
select name from sashelp.class
where name like "%nrstr(%%)&text.";
quit;
您将%
加倍,因为%str
或%nrstr
中的第一个%会转义某些字符,包括百分比本身。
答案 1 :(得分:0)
%let li=%sysfunc(cats(%,&numero));
并在宏中:
and name like "&li";
你知道其他任何方法来解决这个问题?????这是解决它的正式方法吗? 感谢