- Kategorien:
Numerische Funktionen (Rundung und Kürzung)
TRUNCATE , TRUNC¶
Rundet den Eingabeausdruck auf den nächsten (oder gleichen) Wert ab, der näher an Null liegt. Je nach dem Wert, den Sie als Skalierungsparameter angeben, kann die Transformation Folgendes entfernen:
Alle Ziffern nach dem Dezimalpunkt, was einen Ganzzahlwert ergibt. Dies ist die Standardeinstellung und die häufigste Verwendung von TRUNC für Zahlen.
Einige der signifikanten Ziffern nach dem Dezimalpunkt, was zu einem weniger präzisen Wert führt.
Alle signifikanten Ziffern nach dem Dezimalpunkt und einige signifikante Ziffern links vom Dezimalpunkt, was einen Wert ergibt, der ein Vielfaches von 10, 100 oder einer anderen Potenz von 10 ist.
Die Funktionen TRUNCATE und TRUNC sind gleichbedeutend.
Bemerkung
TRUNC ist überlastet. Die Funktion kann auch mit Datums-/Zeitwerten verwendet werden, um Daten, Zeiten und Zeitstempel auf einen bestimmten Teil abzuschneiden. Die numerische TRUNC-Funktion hat einen erforderlichen und einen optionalen Parameter. Die TRUNC-Funktion für Datum/Uhrzeit hat zwei erforderliche Parameter.
Syntax¶
TRUNCATE( <input_expr> [ , <scale_expr> ] )
TRUNC( <input_expr> [ , <scale_expr> ] )
Argumente¶
input_expr
Der Wert oder Ausdruck, der verarbeitet werden soll. Der Datentyp muss aus einem der numerischen Datentypen bestehen, z. B. FLOAT oder NUMBER.
scale_expr
Die Anzahl der Ziffern, die nach dem Dezimalpunkt eingefügt werden sollen. Verwenden Sie einen Ausdruck, der eine Ganzzahl von -38 bis +38 ergibt.
Der Standardwert für
scale_expr
ist null. Das bedeutet, dass die Funktion alle Nachkommastellen entfernt.Informationen über negative Skalierungen finden Sie unter Nutzungshinweise unten.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist NUMBER(Genauigkeit, Skalierung).
Wenn die Eingabeskalierung größer oder gleich Null war, stimmt die Ausgabeskalierung im Allgemeinen mit der Eingabeskalierung überein.
Wenn die Eingabeskalierung negativ war, lautet die Ausgabeskalierung 0.
Beispiel:
Der von
TRUNCATE(3.14, 1)
zurückgegebene Datentyp istNUMBER(4, 1)
.Der von
TRUNCATE(3.14, 0)
zurückgegebene Datentyp istNUMBER(4, 0)
.Der von
TRUNCATE(33.33, -1)
zurückgegebene Datentyp istNUMBER(5, 0)
.
Wenn die Skalierung Null ist, dann ist der Wert effektiv eine ganze Zahl.
Nutzungshinweise¶
Wenn
scale_expr
negativ ist, wird die Anzahl der Stellen vor dem Dezimalpunkt angegeben, an die die Zahl angepasst werden soll. Wenn die Skalierung beispielsweise -2 beträgt, ist das Ergebnis ein Vielfaches von 100.Wenn
scale_expr
größer als die Skalierung des Eingabeausdrucks ist, hat die Funktion keine Auswirkungen.Wenn entweder
input_expr
oderscale_expr
den Wert NULL haben, lautet das Ergebnis NULL.Das Abschneiden erfolgt gegen 0, nicht gegen die kleinere Zahl. Zum Beispiel ergibt
TRUNCATE(-9.6)
-9
, nicht-10
.
Beispiele¶
Die folgenden Beispiele zeigen die Funktion TRUNC für numerische Werte. Beispiele für das Kürzen von Datums-, Zeit- und Zeitstempeln finden Sie unter die Datums-/Zeitform von TRUNC.
Die Beispiele verwenden Daten aus dieser Beispieltabelle. Die Tabelle enthält zwei verschiedene Dezimalzahlen, -975,975 und 135,135, zusammen mit verschiedenen Werten, die Sie für den Skalierungsparameter mit der Funktion TRUNC verwenden können.
CREATE TABLE numeric_trunc_demo (n FLOAT, scale INTEGER);
INSERT INTO numeric_trunc_demo (n, scale) VALUES
(-975.975, -1), (-975.975, 0), (-975.975, 2),
( 135.135, -2), ( 135.135, 0), ( 135.135, 1),
( 135.135, 3), ( 135.135, 50), ( 135.135, NULL);
Wenn Sie keinen Skalierungsparameter angeben, gibt TRUNC bei einem numerischen Parameter standardmäßig den Ganzzahlwert zurück, der dem Parameter entspricht oder näher an Null ist. Die Angabe eines Skalierungsparameters von 0 bewirkt das Gleiche.
SELECT DISTINCT n, TRUNCATE(n)
FROM numeric_trunc_demo ORDER BY n;
+----------+-------------+
| N | TRUNCATE(N) |
|----------+-------------|
| -975.975 | -975 |
| 135.135 | 135 |
+----------+-------------+
Das folgende Beispiel zeigt die Ergebnisse eines Aufrufs der Funktion TRUNC mit den Null-, positiven oder negativen Skalierungsparametern, die auf eine positive und eine negative Zahl angewendet werden.
Die Angabe eines Null-Skalierungsparameters entfernt alle Ziffern nach dem Dezimalpunkt und ergibt einen Ganzzahlwert.
Wenn Sie einen positiven Skalierungsparameter angeben, bleibt die angegebene Anzahl signifikanter Stellen nach dem Dezimalpunkt erhalten.
Wenn Sie einen negativen Skalierungsparameter angeben, werden entsprechend viele Ziffern zu Nullen links vom Dezimalpunkt.
Die Angabe einer Skalierung, die größer als +38 oder kleiner als -38 ist, ist dasselbe wie die Angabe von +38 oder -38.
SELECT n, scale, TRUNC(n, scale)
FROM numeric_trunc_demo ORDER BY n, scale;
+----------+-------+-----------------+
| N | SCALE | TRUNC(N, SCALE) |
|----------+-------+-----------------|
| -975.975 | -1 | -970 |
| -975.975 | 0 | -975 |
| -975.975 | 2 | -975.97 |
| 135.135 | -2 | 100 |
| 135.135 | 0 | 135 |
| 135.135 | 1 | 135.1 |
| 135.135 | 3 | 135.135 |
| 135.135 | 50 | 135.135 |
| 135.135 | NULL | NULL |
+----------+-------+-----------------+