我已经将数据从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'))
导出到文本文件中的固定长度文本字段时?
我正在看这个question,它提供了一个见解,但并非完整。
感谢有人可以用一些例子来启发我。
非常感谢。
答案 0 :(得分:8)
或者,您也可以指定精度(总位数) 和比例(小数点右边的位数):
如果未指定precision,则列将值存储为给定值。如果 没有指定比例,比例为零。
所以在你的情况下,NUMBER(8,2)
已经得到了:
这为您提供了-999999.99
到999999.99
答案 1 :(得分:4)
我认为你的意思是NUM的数据类型。
如果显示NUMBER(8,2),则表示 8位,并且该数字应四舍五入到最接近的百分数。这意味着之前会有6位数字,小数点后会有2位数字。
请参阅oracle doc:
使用NUMBER数据类型存储定点或浮点数 数字。其幅度范围为1E-130 .. 10E125。如果是的价值 表达式超出此范围,您将获得数字溢出或 下溢错误。您可以指定精度,即总数 of数字和scale,它是右边的位数 小数点。语法如下:
NUMBER [(精度,小数)]
要声明要为其指定比例的定点数,请使用 以下表格:
NUMBER(精度,小数)
声明您无法指定的浮点数 精度或比例,因为小数点可以“浮动”到任何 位置,使用以下形式:
NUMBER
要声明没有小数点的整数,请使用以下格式:
NUMBER(精度) - 与NUMBER(精度,0)相同
您不能使用常量或变量来指定精度和比例; 你必须使用整数文字。 NUMBER值的最大精度 是38位小数。如果未指定精度,则默认为 38或系统支持的最大值,以较小者为准。
缩放,范围从-84到127,决定了舍入的位置 发生。例如,2轮的刻度到最接近的百分之一 (3.456变为3.46)。负比例向左转 小数点。例如,-3舍入到最近的比例 千(3456变成3000)。比例为0轮到最近的整数 数。如果未指定scale,则默认为0.
答案 2 :(得分:2)
NUMBER(p,s)
p(precision) = length of the number in digits
s(scale) = places after the decimal point
所以你的例子中的数字(8,2)是&#39; 999999.99&#39;
您可以看到更多示例here。