[英]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.