sas_uu宏中的like中的变量值

sas_uu宏中的like中的变量值,sas,sas-macro,Sas,Sas Macro,我需要在宏中使用以下代码: 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 dic

我需要在宏中使用以下代码:

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”一样进入。如果我删除中的Black空格

like "%&numero."
我没有得到变量值5,而是得到“%&numero”。所以我不知道如何解决这个问题


谢谢

好的,这不是最好的方法,但解决方法是使用猫:

%let li=%sysfunc(cats(%,&numero));
在宏观上:

and name like "&li";
你知道解决这个问题的其他方法吗?????这是正式的解决方法吗?
谢谢

您需要使用宏引号来转义百分号和/或将其与宏变量分开。多种解决方案中的一种:

%let text=fred;

proc sql;
select name from sashelp.class
where name like "%nrstr(%%)&text.";
quit; 

您可以将
%
加倍,因为
%str
%nrstr
中的第一个%会转义某些字符,包括百分比本身。

您可以使用
名称,如cats(“%”、“&numero”)
直接在sql语句中,而不是创建一个新的宏变量。我不知道,但我看不出有任何方法可以比这简单得多:)