我的数字精度和比例我做错了什么? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我正在尝试在Oracle SQL Developer中插入以下语句:

INSERT INTO ACC
VALUES (1245890, 234.50, 'Broomhill', '15-NOV-2003', 100.00);

该语句插入得足够好而没有错误,但我注意到在查看数据视图时,该行显示第二个和第四个值,少一个小数点。

(例如,当它应该是234.50和100.00时,为234.5和100.0)

我试图在我的表创建代码中增加精度和比例以允许它正确显示。

CREATE TABLE ACC
(
"ACCNO" NUMBER(7),
"BALANCE" NUMBER(5,2),
"BRANCH" VARCHAR(15),
"OPENED" DATE,
"BONUS" NUMBER(5,2)
);

我稍微更改了BALANCE和BONUS数据类型

CREATE TABLE ACC
(
"ACCNO" NUMBER(7),
"BALANCE" NUMBER(5,3)
"BRANCH" VARCHAR(15),
"OPENED" DATE,
"BONUS" NUMBER(5,3)
);

但我得到一个错误说:

Error starting at line : 94 in command -
INSERT INTO ACC
VALUES (1245890, 234.50, 'Broomhill', '15-NOV-2003', 100.00)
Error report -
ORA-01438: value larger than specified precision allowed for this column

我的代码怎么办?我怎么写它才能正确显示我的价值观?

sql oracle precision
2个回答
3
投票

NUMBER(5, 3)是一个有五位数的数字,小数点右边有三位数 - 所以两个位于左边。值“100.00”左侧有三个,因此不适合。

你似乎想要:NUMBER(6, 3)


2
投票

数字正确存储在表格中,但它们不会以您希望的方式显示,因此您必须使用正确的格式掩码。这是一个例子:

SQL> select to_char(234.50, '990D00') val_1,
  2         to_char(100, '990D00') val_2
  3  from dual;

VAL_1   VAL_2
------- -------
 234,50  100,00

SQL>

这是SQL * Plus;您可以在其他(Oracle)工具中设置它,例如Forms,Reports,Apex等,通常在item的Property Palette窗口中。

看看格式模型,https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm

© www.soinside.com 2019 - 2024. All rights reserved.