2015-01-09 65 views
4

我有一个问题,似乎很简单(可能是...),但我无法得到它的工作。SAS Proc SQL修剪不工作?

数据集“列表”中的变量“名称”长度为20.我希望有条件地将值选择到宏变量中,但通常所需值小于指定的长度。这留下了末尾的空白,这是我不能阻止未来调用宏变量的。 (修剪,和其他解决方案,但似乎没有给我我想要什么(这是'乔'没有空白)。这似乎应该比它容易是.....帮助

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....; 

回答

13

其实,有一个选项,修整,做你想做什么

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

另外,结束PROC SQLQUIT;,而不是RUN;

+0

@Jeff有一个有效的答案,但这个更清洁。谢谢。 – pyll

+0

我从来没有见过这个。凉。 +1。 –

5

,如果你指定一个分隔符它的工作原理:

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

是的,这是做到了。谢谢,杰夫。似乎我应该工作,虽然..... – pyll

+0

有趣的是,分隔符甚至没有空白。 – Jeff

+1

@pyll由于某些原因,他们选择使TRIMMED成为默认分隔符,否则NOTRIM成为默认分隔符。我不知道为什么。 – Joe