SAS Proc SQL Trim无效?

4
我有一个看起来很简单的问题(可能确实如此...),但我无法让它正常工作。
数据集“list”中的变量“name”长度为20。我希望有条件地选择值到一个宏变量中,但通常所需的值小于分配的长度。这会留下尾随空格,这会干扰将来调用宏变量。
我已经尝试了trim、compress、btrim、left(trim等其他解决方案,但似乎没有给我想要的结果(即没有空格的“Joe”)。这似乎应该比现在更容易...... 帮帮我。
data list;
    length id 8 name $20;
    input id name $;
cards;
1 reallylongname
2 Joe
;
run;

proc sql;
    select trim(name) into :nameselected
    from list
    where id=2;
run;

%put ....&nameselected....;
2个回答

14

实际上,有一个选项TRIMMED,可以做你想要的。

proc sql noprint;
    select name into :nameselected TRIMMED
    from list
    where id=2;
quit;

另外,在PROC SQL的结尾使用QUIT;,而不是RUN;


@Jeff的回答是可行的,但这个更简洁。谢谢。 - pyll
1
我以前从未见过这个。很酷。+1。 - Alex A.

6

如果您指定分隔符,它将起作用:

proc sql;
    select trim(name) into :nameselected separated by ''
    from list
    where id=2;
run;

没错,就是这样。谢谢,Jeff。看起来我所拥有的应该可以工作,不过...... - pyll
1
有趣的是,分隔符甚至不必为空格。 - Jeff
2
@pyll 由于某些原因,他们选择将带有分隔符的 TRIMMED 设置为默认选项,否则 NOTRIM 为默认选项。我不知道为什么会这样。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接