9

我已经给出了将数据从 Oracle 视图导出到固定长度的文本文件的任务,但是我已经得到了关于如何将数据导出到文本文件的规范。IE

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 文档

或者,您还可以指定精度(总位数)和小数位数(小数点右侧的位数):

如果未指定精度,则列存储给定值。如果未指定比例,则比例为零。

所以在你的情况下, aNUMBER(8,2)有:

  • 共 8 位数字
  • 其中2个在小数点后

-999999.99这为您提供了一个范围999999.99

于 2013-07-18T06:25:42.293 回答
6

我假设您的意思是 NUMBER 数据类型按 NUM。

当它说 NUMBER(8,2) 时,表示将有8 位数字,并且数字应该四舍五入到最接近的百分之一。这意味着小数点前有6位,小数点后有2位。

请参阅oracle 文档

您使用 NUMBER 数据类型来存储定点或浮点数。其幅度范围为 1E-130 .. 10E125。如果表达式的值超出此范围,则会出现数值溢出或下溢错误。您可以指定精度(即总位数)和比例(即小数点右侧的位数)。语法如下:

NUMBER[(精度,比例)]

要声明必须指定比例的定点数,请使用以下形式:

NUMBER(精度,比例)

要声明浮点数,因为小数点可以“浮动”到任何位置,所以不能指定精度或小数位数,请使用以下形式:

数字

要声明没有小数点的整数,请使用以下形式:

NUMBER(precision) -- 与 NUMBER(precision,0) 相同

您不能使用常量或变量来指定精度和小数位数;您必须使用整数文字。NUMBER 值的最大精度为 38 位十进制数字。如果不指定精度,则默认为 38 或系统支持的最大值,以较小者为准。

范围从 -84 到 127 的比例决定了舍入的位置。例如,2 轮到最接近的百分之一的比例(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 回答