Was ist die Standardpräzision und Skalierung für eine Zahl in Oracle?
Beim anlegen einer Spalte des Typs ZAHL in Oracle, haben Sie die Möglichkeit, nicht die Angabe einer Genauigkeit oder dezimalstellenanzahl. Was tun diese Standard tun, wenn Sie nicht angeben?
InformationsquelleAutor der Frage Matt | 2009-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
NUMBER (precision, scale)
Wenn eine Genauigkeit angegeben wird, werden die Spalte speichert die Werte als gegeben. Wenn kein Maßstab angegeben ist, wird die Waage auf null ist.
Viel mehr info unter:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832
InformationsquelleAutor der Antwort Angelo Marcotullio
Den
NUMBER
Typ kann angegeben werden, in verschiedene Stile:Wo ist die Präzision der Gesamtzahl der Ziffern und der Skala, ist die Anzahl der
Ziffern rechts oder Links (negative Skala) der Dezimalpunkt.
Oracle gibt ORA-01438 als
Als in der Tabelle aufgeführt, wird diese Integritätsprüfung ist nur aktiv, wenn die Präzision
ist explizit angegeben. Ansonsten Oracle schweigend Runden die eingefügt oder aktualisiert
Wert mit bestimmten, nicht näher beschriebenen Methode.
InformationsquelleAutor der Antwort maxschlepzig
Glaube ich, dass die Standard-Präzision liegt bei 38, die default-Skala null ist.
Jedoch ist die tatsächliche Größe einer Instanz dieser Spalte ist dynamisch. Es braucht genau so viel Platz wie nötig, um den Wert zu speichern, oder max 21 bytes.
InformationsquelleAutor der Antwort baretta
Oracle
speichert zahlen in der folgenden Weise:1 byte
für Strom,1 byte
für die erste Mantisse Ziffer (das ist einer vor dem separator), der rest ist für die anderen stellen.Durch
digits
hierOracle
bedeutetcentesimal digits
(ich. e.base 100
)Als wir sehen können, ist die maximale Anzahl ist hier
7.(7) * 10^124
und er19
zentesimale Ziffern für die Genauigkeit oder die38
Dezimalstellen.InformationsquelleAutor der Antwort Quassnoi
Eigentlich kann man immer testen Sie es selbst.
CREATE TABLE CUSTOMERS
(
CUSTOMER_ID NUMBER NOT NULL,
JOIN_DATE DATE NOT NULL,
CUSTOMER_STATUS VARCHAR2(8) NOT NULL,
CUSTOMER_NAME VARCHAR2(20) NOT NULL,
CREDITRATING VARCHAR2(10)
)
;
select column_name, data_type, nullable, data_length, data_precision, data_scale
from user_tab_columns where table_name ='CUSTOMERS';
InformationsquelleAutor der Antwort spectra