簡體   English   中英

使用SQL Developer將DECIMAL類型插入Oracle DB

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM