主要是想做macro variable中的单引号与双引号的呼唤,发现在data step可以实现
%let a=%str('0123','0456');
%let b=%sysfunc(translate(&a,  "'" ,'"' ));
%put &a;
%put &b;
%let c=%str("0123","0456");
%let d=%sysfunc(translate(&c,'"' ,"'"));
%put &c;
%put &d;
运行结果如下
73   %let a=%str('0123','0456');
74   %let b=%sysfunc(translate(&a,  "'" ,'"' ));
75   %put &a;
'0123','0456'
76   %put &b;
"0123","0456"
77   %let c=%str("0123","0456");
78   %let d=%sysfunc(translate(&c,'"' ,"'"));
79   %put &c;
"0123","0456"
80   %put &d;
'0123','0456'
但是当我在sql中运用同样的方法以后,发现结果并不是我设想的那种。
proc sql;
create table a1 as
select '"'||trim(name)||'"'as name1, sex
from sashelp.class
;
select name1 into: name2 separated by ',' from a1;
quit;
%put &name2;
88   %put &name2;
"Alfred","Alice","Barbara","Carol","Henry","James","Jane","Janet","Jeffrey","John","Joyce","Judy","
Louise","Mary","Philip","Robert","Ronald","Thomas","William"
%let provname2=%sysfunc(translate(&name2,  "'" ,'"' ));
%put &provname2;
91   %put &provname2;
'Amet t'
发现得到macro variable &name2 是我设想的结果,但是当我用同样的方法做单双引号的转换的时候,却得到了一个‘Amet t’这个很奇怪的数据,不知道有没有大牛可以帮我解答一下?