全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4063 2
2014-02-09
主要是想做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’这个很奇怪的数据,不知道有没有大牛可以帮我解答一下?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-2-9 10:52:45
可以价格函数%nrbquote试一下

%let provname2=%sysfunc(translate(%nrquote(&name2),  "'" ,'"' ));
%put &provname2;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-9 11:14:30
你的太阳 发表于 2014-2-9 10:52
可以价格函数%nrbquote试一下

%let provname2=%sysfunc(translate(%nrquote(&name2),  "'" ,'"' ));
多谢多谢,果然就转过来了。
用%nrquote就是把原variable中的单引号或者双引号都原封不动的提出来了,但是不用%nrquote的话,&name2是怎样传过来的呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群