4457 8

&字符的转义 [推广有奖]

  • 0关注
  • 2粉丝

博士生

30%

还不是VIP/贵宾

-

威望
0
论坛币
265 个
通用积分
13.9738
学术水平
2 点
热心指数
6 点
信用等级
2 点
经验
4193 点
帖子
115
精华
0
在线时间
280 小时
注册时间
2012-3-22
最后登录
2025-10-13

楼主
缘oO来如此0o 发表于 2014-6-3 16:41:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
字符变量string=a&b

data abc;
input string $;
cards;
a&b
;run;
%macro mymacro();
   proc sql;
        select string into :string from abc;
   quit;

%if &string. eq  (string=a&b该怎么写) %then %put yes;
%mend;
%mymacro;


二维码

扫码加我 拉你入群

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

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

关键词:proc sql string Select tring Macro

沙发
wanlin000 发表于 2014-6-3 16:47:26
帮顶吧。
都没看出来用的什么软件编程的
靠自己

藤椅
mingfeng07 学生认证  发表于 2014-6-3 23:50:15
后面为防止b被解读,正常是这么写:%nrstr(a&b),但是不管你后面怎么写,由于你的%if后面&string被解读为a&b,而由于b宏变量并不存在,&b无法被解读,所以肯定会出问题的。
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

板凳
hkhl237 发表于 2014-6-4 14:40:19
%if %nrquote(&string.) eq  %nrstr(a&b) %then %put yes;

会有warning,但也能出结果


%if %superq(string) eq  %nrstr(a&b) %then %put yes;

能出结果,也没有warning

报纸
hkhl237 发表于 2014-6-4 14:42:54
%SUPERQ masks the same characters as the %NRBQUOTE function. However, %SUPERQ does not attempt to resolve anything in the value of a macro variable. %NRBQUOTE attempts to resolve any macro references or macro variable values in the argument before masking the result

地板
缘oO来如此0o 发表于 2014-6-5 11:07:11
hkhl237 发表于 2014-6-4 14:40
%if %nrquote(&string.) eq  %nrstr(a&b) %then %put yes;

会有warning,但也能出结果
Thank you ~
       如果 string=a&b,b&c
       %do i=1 %to 2;
              str&i.=%scan(&string.,&i.,',');(这该如何写呢?)
       %end;
谢谢

7
hkhl237 发表于 2014-6-5 15:36:56
没研究过这个

8
Tigflanker 发表于 2014-6-5 15:59:52
%do i=1 %to 2;
    str&i.=%scan(&string.,&i.,%bquote(,));
%end;

另外请注意,cards中不能有宏,宏中不能有cards。
Bye SAS.
若有缘,能重聚。

9
Tigflanker 发表于 2014-6-5 16:10:44
  1. data abc;
  2. input string $;
  3. cards;
  4. a&b
  5. ;run;

  6. %macro mymacro;
  7.    proc sql;
  8.         select string into :string from abc;
  9.    quit;

  10. %if %QTRIM(%superq(string)) eq %nrstr(a&b) %then %put yes;
  11. %put >>%QTRIM(%superq(string))<< >>>%nrstr(a&b)<<<;
  12. %mend;
  13. %mymacro;
复制代码


%Bquote系列其实是挺难的东西。
Superq只解析第一层,将拿来的值整个屏蔽;Nrstr将括号内的内容全保护不解析。
Bye SAS.
若有缘,能重聚。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 11:48