Einfügen von DECIMAL-Datentyp Oracle-DB mit SQL Developer
Freunde, ich bin neu in SQL und ich finde keine Antwort auf meine Frage
Ich versuche zu legen Dezimalzahl mit SQL Developer (version 4 build 15), aber SQL Developer automatisch die Rundung meiner Nummer. Meine test-DB ist OracleXE112_Win64.
Beispiel:
CREATE TABLE salespeople
(
snum INTEGER NOT NULL PRIMARY KEY,
sname CHAR(15) NOT NULL,
city CHAR(15) NOT NULL,
comm DECIMAL
);
dann
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);
Als Ergebnis sehe ich 0 in comm Spalte.
Wenn ich versuche, die Nummer einfügen 1.35, es ist Rundung auf 1.
Dank
- Die Skala standardmäßig auf 0 für DEZIMAL, was bedeutet, dass DECIMAL() behandelt wird als ZAHL(, 0), d.h. INTEGER
- Ich glaube nicht, dass
CHAR(15)
ist der richtige Datentyp fürsname
undcity
finden Sie unter Was ist der große Unterschied zwischen VARCHAR2 und CHAR - Wenn Sie sind neu in Oracle SQL dann schlage ich vor, einige grundlegende Lektüre (es dauert nicht lange), ein starter ist docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements.htm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
decimal
Daten Typ braucht eine Waage und Präzision. "Scale" ist die Anzahl der Ziffern nach dem Dezimalpunkt.Wenn Sie nicht geben Sie den Wert für skalieren, dann ist es standardmäßig auf 0 -- im wesentlichen eine ganze Zahl. (Und Genauigkeit standardmäßig auf 5.)
In der Regel, Oracle-Datenbanken verwenden
number
stattdecimal
. Aber, wenn Sie wollendecimal
, geben Sie das gewünschte Skala und Präzision.Überprüfung der Oracle-Dokumentation für DECIMAL, es sagt:
"Wenn der Maßstab ist nicht angegeben, wird der default-Skalierung ist 0. Wenn die Genauigkeit nicht angegeben ist, wird die Standard-Genauigkeit ist 5."
Präzision ist : "die Gesamtzahl der Ziffern, die Links und rechts von dem Dezimalpunkt".
Skala ist : "die Anzahl der Ziffern die Dezimalstellen".
Dies bedeutet, dass, da Ihre Standard-Skala 0 ist, dann alle zahlen sind gerundet auf eine Ganzzahl.
Dieses Problem zu beheben, müssen Sie einen
SCALE
für Ihre Daten. Die meisten Szenarien, die ich gesehen habe, sind allerdings vonDECIMAL(18,5)
und aus Ihrem Beispiel-Abfragen, diese sollten in Ordnung sein.So, nur ändern Sie Ihre Tabelle definition: