1

SAS データセットに 20 桁の ID を持つ列があります。SAS EG で PROC SQL を使用して一部のレコードを除外しようとすると、ID のフィールドが 1E18 に切り捨てられ、エクスポートによって実際の値ではなく各フィールドの切り捨てられた値が返されます。

データ セットを作成してフィールド値を定義しようとしましたが、影響はありません。

これが私のサンプルコードです

proc sql; create table a01 as select a.id, a.value from b; quit;

data a02;
set a01;
id = put(id,$30.);
run;

まだ動作していないようです。

誰かが私が間違っていることを知っていますか?

4

2 に答える 2

3

[Windows で SAS を使用している場合 - *nix OS でも話は変わりません] SAS で正確に表現できる最大の整数は、9,007,199,254,740,992 または 2^53 または約 16 桁の長さです - ほとんどの場合、クレジット カード番号です。通常は 15 ~ 16 桁の長さで、数値変数として SAS に格納できます。しかし、あなたが言及したように、20桁の整数があると、値の精度が失われ、科学表記法に変換されます。

問題は PROC SQL ではありません。問題は、大きな整数を表す際の SAS の制限が小さいことです。他のほとんどのデータベースは、最大 2^64 を正確に表します。SAS のドキュメントを参照してください

于 2013-11-01T06:46:32.420 に答える