4

私は非常に単純に見える問題を抱えています (おそらく...) が、それを機能させることができません。

データセット 'list' 内の変数 'name' の長さは 20 です。マクロ変数に値を条件付きで選択したいのですが、目的の値が割り当てられた長さよりも小さいことがよくあります。これにより、マクロ変数の将来の呼び出しが中断されるため、末尾の空白が最後に残ります。

トリム、圧縮、btrim、left(trim、およびその他のソリューションを試しましたが、私が望むものは何も得られないようです (空白のない「ジョー」です)。これは、実際よりも簡単なはずのようです... .. ヘルプ。

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 SQLではQUIT;なくで終わり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 に答える