Dezimalstellen
Die Dezimalstellen von dezimalen und numerischen Datentypen werden als maximale Anzahl von Ziffern rechts vom Dezimaltrennzeichen oder als Skalierung der Daten definiert. Bei ungefähren Gleitkommazahlenspalten oder -parametern ist die Skalierung nicht definiert, da die Anzahl der Ziffern rechts vom Dezimaltrennzeichen nicht festgelegt ist. Für datetime- oder Intervalldaten, die eine Sekundenkomponente enthalten, werden die Dezimalstellen als Anzahl von Ziffern rechts neben dem Dezimaltrennzeichen in der Sekundenkomponente der Daten definiert.
Für die Datentypen SQL_DECIMAL und SQL_NUMERIC entspricht die maximale Skalierung in der Regel der maximalen Genauigkeit. Einige Datenquellen setzen jedoch ein separates Limit für die maximale Skalierung fest. Um die minimalen und maximalen Skalierungen zu bestimmen, die für einen Datentyp zulässig sind, ruft eine Anwendung SQLGetTypeInfo auf.
Die dezimalen Ziffern, die für jeden präzisen SQL-Datentyp definiert sind, werden in der folgenden Tabelle dargestellt.
SQL-Typ | Dezimalzahlen |
---|---|
Alle Zeichen- und Binärtypen[a] | – |
SQL_DECIMAL SQL_NUMERIC |
Die definierte Anzahl von Ziffern rechts vom Dezimaltrennzeichen. Beispielsweise ist die Skalierung einer Spalte, die als NUMERIC(10,3) definiert ist, 3. Dies kann eine negative Zahl sein, um die Speicherung sehr großer Zahlen zu unterstützen, ohne exponentielle Notation zu verwenden. beispielsweise könnte "12000" als "12" mit einer Skala von -3 gespeichert werden. |
Alle genauen numerischen Typen außer SQL_DECIMAL und SQL_NUMERIC[a] | 0 |
Alle ungefähren Datentypen[a] | – |
SQL_TYPE_DATE und alle Intervalltypen ohne Sekundenkomponente[a] | – |
Alle datetime-Typen außer SQL_TYPE_DATE und alle Intervalltypen mit einer Sekundenkomponente | Die Anzahl der Ziffern rechts vom Dezimaltrennzeichen im Sekundenteil des Werts (Sekundenbruchteile). Diese Zahl darf nicht negativ sein. |
SQL_GUID | – |
[a] Das Argument DecimalDigits von SQLBindParameter wird für diesen Datentyp ignoriert.
Die für die Dezimalstellen zurückgegebenen Werte entsprechen nicht den Werten in einem Deskriptorfeld. Die Werte können je nach Datentyp entweder aus dem SQL_DESC_SCALE- oder dem SQL_DESC_PRECISION-Feld stammen, wie in der folgenden Tabelle gezeigt.
SQL-Typ | Deskriptorfeld entspricht Dezimalstellen |
---|---|
Alle Zeichen- und Binärtypen | – |
Alle exakten numerischen Typen | SCALE |
SQL_BIT | – |
Alle ungefähren numerischen Typen | – |
Alle datetime-Typen | PRECISION |
Alle Intervalltypen mit einer Sekundenkomponente | PRECISION |
Alle Intervalltypen ohne Sekundenkomponente | n/v |