SAS Proc SQL Trim不工作?

pyl*_*yll 4 trim sas proc-sql

我有一个看似非常简单的问题(可能是......),但我无法让它工作.

数据集"列表"中的变量"name"的长度为20.我希望有条件地将值选择为宏变量,但通常所需的值小于指定的长度.这会在最后留下尾随空白,这是我不能拥有的,因为它们会破坏宏变量的未来调用.

我已经尝试了修剪,压缩,btrim,左(修剪和其他解决方案,但似乎没有任何东西给我我想要的东西(这是'乔'没有空白).这看起来应该比它更容易...... .. 救命.

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....;
Run Code Online (Sandbox Code Playgroud)

Dom*_*azz 14

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

proc sql noprint;
    select name into :nameselected TRIMMED
    from list
    where id=2;
quit;
Run Code Online (Sandbox Code Playgroud)

此外,最终PROC SQLQUIT;,不是RUN;.


Jef*_*eff 6

如果指定分隔符,它可以工作:

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

  • @pyll出于某种原因,他们选择将TRIMMED设为默认值,使用分隔符和NOTRIM默认值.我不知道为什么. (2认同)