全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1595 7
2013-04-26
想把macro variable运用到SQL中,
发现还是有一些问题。

当直接赋值的时候
%let cond1=%str(name like '%J%');

proc sql;
create table test1 as
select *
from sashelp.class
where &cond1;
;
quit;


这样的话,程序可以运行。

当用另外一种繁琐的方法写macro variable的时候,却发现不太可行。
%let c1=J;
%let c2=%str(%')%nrbquote(%)%trim(&c1)%nrbquote(%)%str(%');
%let cond2=%str(name like &c2);
%put &cond2;


这个时候发现cond2 put出来的值是和cond1一样的,但是放到sql中的时候就发现错误
proc sql;
create table test1 as
select *
from sashelp.class
where &cond2;
;
quit;


虽然cond2也进行了解释,但是&cond2本身还是保留在SQL中,我一时之间也不知道怎么解决了,所以想向大家请教一下,怎样用写cond2的方法,让SQL可以顺利运行。




二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-26 08:47:18
proc sql;
create table test1 as
select *
from sashelp.class
where %unquote(&cond2);
;
quit;
二维码

扫码加我 拉你入群

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

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

2013-4-26 09:24:51
学习了: %str(name like '%J%');  %unquote(&cond2);
二维码

扫码加我 拉你入群

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

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

2013-4-26 10:27:37
哈哈,学习了
二维码

扫码加我 拉你入群

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

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

2013-4-26 10:27:39
哈哈,学习了
二维码

扫码加我 拉你入群

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

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

2013-4-26 11:26:56
改一下你的宏变量设置会简单些
不要用%let cond1=%str(name like '%J%');
这样一个宏变量里包含太多的东西了
可以设置一系列的宏变量,有的用于Like子句,有的用于Contain子句
用于Like的宏变量就可以这样用了 name like "&LikeConstraint"
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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