Oracle SQL中的数字格式

hiF*_*iFI 2 sql oracle

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

quantity            NUM         (10)  
price               NUM         (8,2) 
participant_id      CHAR        (3)   
brokerage           NUM         (10,2)  
cds_fees            NUM         (8,2) 
Run Code Online (Sandbox Code Playgroud)

我的困惑出现在数字类型中,当它说(8,2)时.如果我和文本一样使用它,它是否有效

10 characters (as to_char(<field name>, '9999999.99')) 
Run Code Online (Sandbox Code Playgroud)

要么

8 characters (as to_char(<field name>, '99999.99')) 
Run Code Online (Sandbox Code Playgroud)

导出到文本文件中的固定长度文本字段时?

我正在看这个提出见解的问题,但并非完全如此.

感谢有人可以用一些例子来启发我.

非常感谢.

ben*_*y23 8

根据Oracle关于类型的文档

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

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

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

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

这给你一个范围-999999.99999999.99


小智 5

我假设您的意思是 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。