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
PRECISIONnochSCALEfestgelegt wurden, definiert Firebird/InterBase® die Spalten alsINTEGERstattNUMERICund speichert nur den Integer-Teil des Wertes. - Wenn nur
PRECISIONfestgelegt wurde und Sie verwenden den SQL Dialekt 1, konvertiert Firebird/InterBase® die Spalten in einenSMALLINT,INTEGERoderDOUBLE PRECISIONDatentyp 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) >>






