sql >> Databasteknik >  >> RDS >> Oracle

TRUNC(nummer) Funktion i Oracle

I Oracle Database, TRUNC(number) funktion returnerar ett givet tal, trunkerat till ett givet antal decimaler.

Oracle har också en TRUNC(date) funktion, som används på datum. Den här artikeln handlar enbart om TRUNC(number) funktion, som används på siffror.

Syntax

Syntaxen ser ut så här:

TRUNC(n1 [, n2 ])

Där n1 är värdet som ska trunkeras, och n2 är ett valfritt argument som anger hur många decimaler som ska trunkeras n1 till. Om n2 utelämnas, sedan n1 trunkeras till noll decimaler.

n1 kan vara vilken numerisk datatyp som helst eller vilken icke-numerisk datatyp som helst som implicit kan konverteras till en numerisk datatyp.

Exempel

Här är ett exempel:

SELECT TRUNC(3.95)
FROM DUAL;

Resultat:

   TRUNC(3.95) 
______________ 
             3

Ange en decimal

Här är ett exempel på att skicka ett andra argument för att ange hur många decimaler som ska trunkeras till:

SELECT TRUNC(1.25817, 2)
FROM DUAL;

Resultat:

   TRUNC(1.25817,2) 
___________________ 
               1.25

Här är några fler:

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;

Resultat:

     1       2        3         4 
______ _______ ________ _________ 
   1.2    1.25    1.258    1.2581 

Negativa decimaler

Det andra argumentet kan vara ett negativt värde om det behövs. Att skicka ett negativt värde gör att siffror till vänster av decimalen för att bli noll.

Exempel:

SELECT TRUNC(6973.45, -2)
FROM DUAL;

Resultat:

   TRUNC(6973.45,-2) 
____________________ 
                6900

Jämfört med ROUND()

TRUNC() funktionen skiljer sig från ROUND() fungera. ROUND() funktion avrundar talet uppåt i vissa fall och nedåt i andra. TRUNC() funktion, å andra sidan, trunkerar helt enkelt talet utan avrundning.

Här är en jämförelse för att visa denna skillnad:

SELECT 
    TRUNC(3.6789, 2),
    ROUND(3.6789, 2)
FROM DUAL;

Resultat:

   TRUNC(3.6789,2)    ROUND(3.6789,2) 
__________________ __________________ 
              3.67               3.68 

Det skiljer sig också från FLOOR() funktion, som returnerar det största heltal som är lika med eller mindre än dess argument. FLOOR() accepterar inte ett andra argument som ROUND() och TRUNC() do (det returnerar bara ett heltal ändå).

Nullvärden

Om något argument är null , resultatet är null :

SET NULL 'null';

SELECT 
    TRUNC(null, 2),
    TRUNC(2.35, null),
    TRUNC(null, null)
FROM DUAL;

Resultat:

   TRUNC(NULL,2)    TRUNC(2.35,NULL)    TRUNC(NULL,NULL) 
________________ ___________________ ___________________ 
            null                null                null 

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när ett nollvärde inträffar som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Icke-numeriska argument

Så här händer när vi tillhandahåller icke-numeriska argument:

SELECT TRUNC('Hundred', 'Two')
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT TRUNC('Hundred', 'Two')
FROM DUAL
Error report -
ORA-01722: invalid number

Ogiltigt antal argument

Anropar TRUNC() med fel antal argument, eller utan ett argument resulterar i ett fel:

SELECT TRUNC()
FROM DUAL;

Resultat:

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:

Och:

SELECT TRUNC(1, 2, 3)
FROM DUAL;

Resultat:

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:

  1. Mysql Konvertera kolumn till rad (pivottabell)

  2. Hur man lägger till Active Directory-användargrupp som inloggning i SQL Server

  3. Hur SCHEMA_NAME() fungerar i SQL Server

  4. Hur kan jag aktivera MySQLi-tillägget i PHP 7?