2015-01-09 66 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