楼主: priss111
3090 8

[原创博文] 请教:请问code中引号错在哪里? [推广有奖]

  • 0关注
  • 5粉丝

已卖:9份资源

副教授

16%

还不是VIP/贵宾

-

威望
0
论坛币
153 个
通用积分
47.5396
学术水平
11 点
热心指数
14 点
信用等级
10 点
经验
14935 点
帖子
472
精华
0
在线时间
808 小时
注册时间
2008-3-30
最后登录
2025-3-17

楼主
priss111 发表于 2011-3-18 10:42:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
proc sql 中的引号无论写的单的还是双的,warning均显示:没有解析宏_1 & _2.

请各位老师帮忙讲解一下:proc sql中的错误,谢谢!

data aa;
input m_1 m_2 n_1 n_2 x_1 x_2;
cards;
1 2 7 2 3 4
3 4 8 3 4 5
1 3 5 5 6 7
;
proc contents data=aa out=bb(keep=name);
run;

proc sql;
select name into:names_1 separated by " "from bb where name like"%_1";
select name into:names_2 separated by " "from bb where name like"%_2";
quit;

data names_1(keep=&names_1) names_2(keep=&names_2);
set aa;
run;
二维码

扫码加我 拉你入群

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

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

关键词:code COD ODE proc sql separate

回帖推荐

baoaibaobao 发表于4楼  查看完整内容

要么把%换成_,要么把_去掉,你试试!

本帖被以下文库推荐

沙发
david0 发表于 2011-3-18 11:05:43
空格问题。
proc sql;                                                                                                                              
select name into:names_1 separated by " " from bb where name like "%_1";                                                               
select name into:names_2 separated by " " from bb where name like "%_2";                                                               
quit;

藤椅
priss111 发表于 2011-3-18 11:12:46
2# david0

谢谢回复!

但是空格后运行仍提示:
139  proc sql;
140  select name into:names_1 separated by " " from bb where name like "%_1";
WARNING: 没有解析宏 _1 的调用。
141  select name into:names_2 separated by " " from bb where name like "%_2";
WARNING: 没有解析宏 _2 的调用。
142  quit;

各位老师帮忙解析一下,谢谢!

板凳
baoaibaobao 发表于 2011-3-18 11:31:22
要么把%换成_,要么把_去掉,你试试!
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

报纸
sopching 发表于 2011-3-18 11:44:32
% sign replaces any number of characters;
_ sign replaces one number of character;
when you combine '%' with ' _',it may cause a bug.

地板
david0 发表于 2011-3-18 11:45:36
单引号没有问题。
287  proc sql;
288  select name into :names_1 separated by " " from bb where name like '%_1';
289  select name into :names_2 separated by " " from bb where name like '%_2';
290  quit;

7
priss111 发表于 2011-3-18 12:33:23
4# baoaibaobao

非常感谢!

这2种方法都可以。

8
priss111 发表于 2011-3-18 12:34:24
5# sopching

非常感谢!

这段文字很好,学习了。

9
myc_sas 发表于 2011-3-18 16:48:01
问题本身不是出在%和_连用。而是因为你用了双引号,macro compiler认为你的%_1是一个macro变量去symbol table里寻找且没有找到,所以出了警告。(当然这不影响程序运行出正常结果)

把_去掉并不能从根本解决这个问题。而之所以在这个例子里去掉_就不出警告,是因为%加数字是非法的macro变量。假如你第一个data step的input语句读入的variable名字换成 m_a m_b n_a n_b等等……你就会发现即使去掉_,仍然会有警告说没有找到macro变量A之类的。

我推荐的解决办法是:在SQL里面,对strings尽量用单引号(这个是SQL标准),除非需要使用macro变量才用双引号。比如这个例子你把name like 后面都改为 '%_1' 就可以了。——当然了,%和_连用是没什么意义的,因为%本身就够了,而且这里的_并不是真正意义上的_字符,而是任何一个位置的字符,可以是字母,数字……等等。但从SQL语法本身是可以用的。
已有 3 人评分学术水平 热心指数 收起 理由
priss111 + 1 + 1 非常感谢,学习中。
sopching + 1 + 1 学习了。
baoaibaobao + 1 + 1 学习了

总评分: 学术水平 + 3  热心指数 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 22:15