NUMERIC und DECIMAL
<< NULL | IBExpert Glossar | Page Size (Seitengröße) >>
NUMERIC
und DECIMAL
Der Datentyp NUMERIC
definiert eine numerische Spalte, in der der Wert ein festes Dezimalkomma hat, wie bei Währungsdaten. NUMERIC(18)
ist ein 64-Bit Integer-Wert in SQL Dialekt 3 und ist fast unendlich. Seit der Einführung des SQL Dialekt 3 werden numerische und dezimale Datentypen als INTEGERS
mit enstprechender Größe gespeichert.
SQL Dialekt 1 bietet NUMERIC(15)
.
Syntax:
NUMERIC(precision, scale);
oder
DECIMAL(precision, scale);
PRECISION
bezieht sich auf die Gesamtzahl an Ziffern und SCALE
beieht sich auf die Anzahl der Zeichen rechts vom Deziamlkomma. Beide Zahlen können von 1 bis 18 (SQL dialect 1: 1-15) gehen, aber SCALE
muss weniger oder gleich PRECISION
sein.
Es ist besser einen NUMERIC
_wert immer auf seine maximale Länge zu definiern, wie in diesem Fall, der 32 Bit INTEGER
-Wert verwendet wird. Sonst wird ein 16 Bit-Wert intern verwendet, beispielsweise wie NUMERIC(4,2)
und der wird nicht immer korrekt von der Client-Programmumgebung zurück transformiert (eine ältere BDE-Version könnte zum Beispiel mit einem NUMERIC(4,2)
aus Euro 12,40 1,240 machen).
Firebird/InterBase® unterstützt eine Vielzahl an Optionen, um PRECISION
und SCALE
festzulegen oder nicht:
- Wenn weder
PRECISION
nochSCALE
festgelegt wurden, definiert Firebird/InterBase® die Spalten alsINTEGER
stattNUMERIC
und speichert nur den Integer-Teil des Wertes. - Wenn nur
PRECISION
festgelegt wurde und Sie verwenden den SQL Dialekt 1, konvertiert Firebird/InterBase® die Spalten in einenSMALLINT
,INTEGER
oderDOUBLE PRECISION
Datentyp basierend auf der entsprechenden Zahl der maßgeblichen Ziffern, die gespeichert werden.
Wenn im SQL Dialekt 3 nur PRECISION
fetsgelegt wurde, konvertiert Firebird/InterBase® die Spalten in einen SMALLINT
, INTEGER
oder INT64
Datentyp, basierend auf der entsprechenden Zahl der maßgeblichen Ziffer, die gespeichert werden.
Es gibt einen wichtigen Unterschied zwischen den zwei Dialekten, denn da INT64
ein INTEGER
-Datentyp ist und DOUBLE PRECISION
nicht, werden Sie gelegentlich Rundungsfehler im SQL Dialket 1 haben, jedoch nicht im SQL Dialekt 3 oder später.
Der NUMERIC
-Datentyp sollte nur für Felder verwendet werden, die später als Teil einer Kalkulation verwendet werden.
Firebird/InterBase® konvertiert die Spalten wie folgt:
Definition | erzeugter Datentyp |
---|---|
Decimal(1)-Decimal(4) | Small Integer |
Decimal(5)-Decimal(9) | Integer |
Decimal(10)-Decimal(18) | Int (64) |
Baechten Sie bitte, dass wenn einDECIMAL(5)
-Datentyp fetstgelegt wurde, es tatsächlich möglich ist, einen Wert bis zu der Höhe Höhe eines DECIMAL(9)
-Wertes zu speichern, da Firebird/InterBase® den kleinsten verfügbaren Datentyp verwendet, um den Wert zu speichern. Für eine DECIMAL(5)
-Spalte ist das ein INTEGER
, der einen Wert in Höhe eines DECIMAL(9)
-Wertes speichern kann.
NUMERIC-SORT
Firebird 2.5 führte NUMERIC-SORT
für Unicode-Sortierungen ein.
Format und Verwendung
NUMERIC-SORT={0 | 1}
Der Defaultwert, 0
, sortiert numerische Werte in alphabetischer Reihenfolge. Zum Beispiel:
1 10 100 2 20
1
sortiert numerische Werte in numerischer Reihenfolge. Zum Beispiel:
1 2 10 20 100
Beispiel
create collation unicode_num for utf8 from unicode 'NUMERIC-SORT=1';
Siehe auch:
deutschsprachig:
Tabelleneditor
SQL Editor
englischsprachig:
Data types and subtypes
Selecting the right data type to improve database performance
Firebird 2.1 Language Reference Update
Firebird 2.0 Language Reference Update
SQL Language Reference
zurück zum Seitenanfang
<< NULL | IBExpert Glossar | Page Size (Seitengröße) >>