4

我有一个看起来很简单的问题(可能是......),但我无法让它工作。

数据集“列表”中的变量“名称”的长度为 20。我希望有条件地将值选择到宏变量中,但通常所需的值小于分配的长度。这会在最后留下尾随空白,因为它们会破坏宏变量的未来调用,所以我不能拥有这些空白。

我已经尝试过修剪、压缩、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....;
4

2 回答 2

14

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

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

另外,PROC SQLQUIT;, not结尾RUN;

于 2015-01-09T16:14:37.933 回答
6

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

proc sql;
    select trim(name) into :nameselected separated by ''
    from list
    where id=2;
run;
于 2015-01-09T15:41:44.233 回答