9

Oracle ビューから固定長のテキスト ファイルにデータをエクスポートするタスクを与えられましたが、データをテキスト ファイルにエクスポートする方法の仕様も与えられました。いえ

quantity            NUM         (10)  
price               NUM         (8,2) 
participant_id      CHAR        (3)   
brokerage           NUM         (10,2)  
cds_fees            NUM         (8,2) 

私の混乱は、(8,2) と言う数値型で発生します。テキストと同じものを使用する場合、それは効果的に意味しますか

10 characters (as to_char(<field name>, '9999999.99')) 

また

8 characters (as to_char(<field name>, '99999.99')) 

テキストファイルの固定長テキストフィールドにエクスポートするときは?

私は洞察を与えたこの質問を見ていましたが、完全ではありませんでした。

誰かがいくつかの例で私を啓発してくれれば幸いです。

どうもありがとう。

4

3 に答える 3

22

タイプに関するOracleのドキュメントによると

オプションで、精度 (合計桁数) と位取り (小数点以下の桁数) を指定することもできます。

精度が指定されていない場合、列には指定された値が格納されます。スケールが指定されていない場合、スケールはゼロです。

したがって、あなたの場合、 a NUMBER(8,2)、持っています:

  • 合計8桁
  • うち2桁は小数点以下

これにより、〜の範囲が得られ-999999.99ます999999.99

于 2013-07-18T06:25:42.293 に答える
6

NUMBER データ型を NUM で意味していると思います。

NUMBER(8,2) と表示されている場合、それは8 桁になることを意味し、数値は最も近い 100 分の 1 に丸められる必要があります。これは、小数点の前に 6 桁、後に 2 桁があることを意味します。

オラクルのドキュメントを参照してください:

NUMBER データ型を使用して、固定小数点数または浮動小数点数を格納します。その大きさの範囲は 1E-130 .. 10E125 です。式の値がこの範囲外になると、数値のオーバーフローまたはアンダーフロー エラーが発生します。合計桁数である精度と、小数点以下の桁数である位取りを指定できます。構文は次のとおりです。

NUMBER[(精度,位取り)]

スケールを指定する必要がある固定小数点数を宣言するには、次の形式を使用します。

NUMBER(精度,位取り)

小数点が任意の位置に「浮動」する可能性があるため、精度や位取りを指定できない浮動小数点数を宣言するには、次の形式を使用します。

番号

小数点のない整数を宣言するには、次の形式を使用します。

NUMBER(precision) -- NUMBER(precision,0) と同じ

定数または変数を使用して精度と位取りを指定することはできません。整数リテラルを使用する必要があります。NUMBER 値の最大精度は 38 桁です。精度を指定しない場合、デフォルトは 38 またはシステムでサポートされている最大値のいずれか小さい方になります。

-84 から 127 の範囲のスケールは、丸めが行われる場所を決定します。たとえば、2 のスケールは最も近い 100 分の 1 に丸められます (3.456 は 3.46 になります)。負の位取りは、小数点の左側を丸めます。たとえば、-3 のスケールは最も近い千の位に丸められます (3456 は 3000 になります)。スケール 0 は最も近い整数に丸められます。スケールを指定しない場合、デフォルトは 0 です。

于 2013-07-18T06:27:22.393 に答える
2
NUMBER(p,s)
p(precision)  = length of the number in digits 
s(scale) = places after the decimal point

したがって、あなたの例の Number(8,2) は '999999.99' です

ここでさらに例を見ることができます。

于 2013-07-18T06:25:25.603 に答える