Kategorien:

Numerische Funktionen (Rundung und Kürzung)

TRUNCATE , TRUNC

Rundet den Eingabeausdruck auf die nächste (oder gleichgroße) Ganzzahl ab, die näher an Null liegt, oder auf den nächsten gleichgroßen oder kleineren Wert mit der angegebenen Anzahl von Nachkommastellen.

Diese Funktionen sind gleichbedeutend.

Bemerkung

TRUNC ist überladen. Es kann auch als Datums-/Zeitfunktion verwendet werden, um Daten, Zeiten und Zeitstempel zu kürzen auf einen angegebenen Teil.

Siehe auch:

CEIL , FLOOR , ROUND

Syntax

TRUNCATE( <input_expr> [ , <scale_expr> ] )

TRUNC( <input_expr> [ , <scale_expr> ] )

Argumente

Eingabeausdruck

Der Wert oder Ausdruck, der verarbeitet werden soll. Der Datentyp sollte aus einem der numerischen Datentypen bestehen, z. B. FLOAT oder NUMBER.

Skalierungsausdruck

Die Anzahl der Stellen, die die Ausgabe nach dem Dezimalpunkt enthalten soll. Der Ausdruck sollte eine Ganzzahl von -38 bis +38 ergeben.

Der Standardwert für Skalierungsausdruck ist null. Das bedeutet, dass die Funktion alle Nachkommastellen entfernt.

Informationen zu negativen Skalierungen finden Sie in den folgenden Nutzungshinweisen.

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 lautet NUMBER(4, 1).

  • Der von TRUNCATE(3.14, 0) zurückgegebene Datentyp lautet NUMBER(4, 0).

  • Der von TRUNCATE(33.33, -1) zurückgegebene Datentyp lautet NUMBER(5, 0).

Wenn die Skalierung Null ist, dann ist der Wert effektiv eine ganze Zahl.

Nutzungshinweise

  • Wenn Skalierungsausdruck 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 Skalierungsausdruck größer als die Skalierung des Eingabeausdrucks ist, hat die Funktion keine Auswirkungen.

  • Wenn entweder Eingabeausdruck oder Skalierungsausdruck NULL sind, lautet das Ergebnis NULL.

  • Das Abschneiden erfolgt gegen 0, nicht gegen die kleinere Zahl. Zum Beispiel ergibt TRUNCATE(-9.6) -9 und nicht -10.

Beispiele

Das folgende Beispiel veranschaulicht die TRUNC-Funktion:

SELECT DISTINCT n, TRUNCATE(n) 
  FROM test_1
  ORDER BY n;
+----------+-------------+
|        N | TRUNCATE(N) |
|----------+-------------|
| -975.975 |        -975 |
|  135.135 |         135 |
+----------+-------------+
SELECT n, scale, TRUNC(n, scale) 
  FROM test_1 
  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 |
+----------+-------+-----------------+