[英]Inserting DECIMAL type to Oracle DB with SQL Developer
朋友,我是SQL新手,找不到我的问题的答案
我正在尝试使用SQL Developer(版本4,内部版本15)插入十进制数字,但是SQL Developer自动将我的数字四舍五入。 我的测试数据库是OracleXE112_Win64。
例:
CREATE TABLE salespeople
(
snum INTEGER NOT NULL PRIMARY KEY,
sname CHAR(15) NOT NULL,
city CHAR(15) NOT NULL,
comm DECIMAL
);
然后
insert into SALESPEOPLE
values (1001, 'Peel', 'London', .12);
insert into SALESPEOPLE
values (1002, 'Serres', 'San Jose', .13);
insert into SALESPEOPLE
values (1004, 'Motika', 'London', .11);
insert into SALESPEOPLE
values (1007, 'Rifkin', 'Barcelona', .15);
insert into SALESPEOPLE
values (1003, 'Axelrod', 'New York', .10);
结果,我在comm列中看到0 。 当我尝试插入数字1.35时 ,将四舍五入为1。
谢谢
decimal
数据类型需要decimal
和精度。 “比例”是小数点后的位数。
如果不指定scale的值,则默认为0-本质上是整数。 (精度默认为5。)
通常,Oracle数据库使用number
而不是decimal
。 但是,如果要使用decimal
,请指定适当的decimal
和精度。
查看Oracle文档中的DECIMAL ,它说:
“如果未指定比例,则默认比例为0。如果未指定精度,则默认精度为5。”
精度为:“小数点左右的位数总数”。
比例为:“小数部分的位数”。
这意味着因为您的默认小数位数为0,所以所有数字都将四舍五入为整数。
要解决此问题,您需要为数据指定SCALE
。 我所看到的大多数情况都足以满足DECIMAL(18,5)
,从您的示例查询中来看,这应该没问题。
因此,只需将表定义更改为:
CREATE TABLE salespeople
(
snum INTEGER NOT NULL PRIMARY KEY,
sname CHAR(15) NOT NULL,
city CHAR(15) NOT NULL,
comm DECIMAL(18,5)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.