In der Oracle-Datenbank der TRUNC(number)
Die Funktion gibt eine bestimmte Zahl zurück, die auf eine bestimmte Anzahl von Dezimalstellen gekürzt wird.
Oracle hat auch einen TRUNC(date)
Funktion, die bei Datumsangaben verwendet wird. In diesem Artikel geht es ausschließlich um den TRUNC(number)
Funktion, die auf Zahlen angewendet wird.
Syntax
Die Syntax lautet wie folgt:
TRUNC(n1 [, n2 ])
Wobei n1
der zu kürzende Wert ist und n2
ist ein optionales Argument, das angibt, um wie viele Dezimalstellen n1
zu. Wenn n2
weggelassen wird, dann n1
wird auf null Dezimalstellen gekürzt.
n1
kann ein beliebiger numerischer Datentyp oder ein beliebiger nicht numerischer Datentyp sein, der implizit in einen numerischen Datentyp konvertiert werden kann.
Beispiel
Hier ist ein Beispiel:
SELECT TRUNC(3.95)
FROM DUAL;
Ergebnis:
TRUNC(3.95) ______________ 3
Geben Sie eine Dezimalstelle an
Hier ist ein Beispiel für die Übergabe eines zweiten Arguments, um anzugeben, auf wie viele Dezimalstellen der Wert gekürzt werden soll:
SELECT TRUNC(1.25817, 2)
FROM DUAL;
Ergebnis:
TRUNC(1.25817,2) ___________________ 1.25
Hier sind noch einige:
SELECT
TRUNC(1.25817, 1) AS "1",
TRUNC(1.25817, 2) AS "2",
TRUNC(1.25817, 3) AS "3",
TRUNC(1.25817, 4) AS "4"
FROM DUAL;
Ergebnis:
1 2 3 4 ______ _______ ________ _________ 1.2 1.25 1.258 1.2581
Negative Dezimalstellen
Das zweite Argument kann bei Bedarf ein negativer Wert sein. Das Übergeben eines negativen Werts bewirkt Ziffern nach links der Dezimalstelle zu Null werden.
Beispiel:
SELECT TRUNC(6973.45, -2)
FROM DUAL;
Ergebnis:
TRUNC(6973.45,-2) ____________________ 6900
Im Vergleich zu ROUND()
Der TRUNC()
Funktion unterscheidet sich von ROUND()
Funktion. Das ROUND()
Die Funktion rundet die Zahl in einigen Fällen auf und in anderen ab. Der TRUNC()
Die Funktion hingegen schneidet die Zahl einfach ab, ohne zu runden.
Hier ist ein Vergleich, um diesen Unterschied zu demonstrieren:
SELECT
TRUNC(3.6789, 2),
ROUND(3.6789, 2)
FROM DUAL;
Ergebnis:
TRUNC(3.6789,2) ROUND(3.6789,2) __________________ __________________ 3.67 3.68
Es unterscheidet sich auch von FLOOR()
-Funktion, die die größte Ganzzahl zurückgibt, die gleich oder kleiner als ihr Argument ist. FLOOR()
akzeptiert kein zweites Argument wie ROUND()
und TRUNC()
tun (es gibt ohnehin immer nur eine Ganzzahl zurück).
Nullwerte
Wenn irgendein Argument null
ist , ist das Ergebnis null
:
SET NULL 'null';
SELECT
TRUNC(null, 2),
TRUNC(2.35, null),
TRUNC(null, null)
FROM DUAL;
Ergebnis:
TRUNC(NULL,2) TRUNC(2.35,NULL) TRUNC(NULL,NULL) ________________ ___________________ ___________________ null null null
Standardmäßig geben SQLcl und SQL*Plus immer dann ein Leerzeichen zurück, wenn als Ergebnis eines SQL SELECT
ein Nullwert auftritt Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Nicht numerische Argumente
Folgendes passiert, wenn wir nicht numerische Argumente angeben:
SELECT TRUNC('Hundred', 'Two')
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT TRUNC('Hundred', 'Two') FROM DUAL Error report - ORA-01722: invalid number
Ungültige Argumentanzahl
Aufruf von TRUNC()
mit der falschen Anzahl von Argumenten oder ohne Argument führt zu einem Fehler:
SELECT TRUNC()
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT TRUNC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Und:
SELECT TRUNC(1, 2, 3)
FROM DUAL;
Ergebnis:
Error starting at line : 1 in command - SELECT TRUNC(1, 2, 3) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: