sql >> Databáze >  >> RDS >> Oracle

TRUNC(číslo) Funkce v Oracle

V databázi Oracle TRUNC(number) funkce vrací dané číslo zkrácené na daný počet desetinných míst.

Oracle má také TRUNC(date) funkce, která se používá na datech. Tento článek je výhradně o TRUNC(number) funkce, která se používá u čísel.

Syntaxe

Syntaxe vypadá takto:

TRUNC(n1 [, n2 ]) 

Kde n1 je hodnota ke zkrácení a n2 je volitelný argument, který určuje, na kolik desetinných míst se má zkrátit n1 na. Pokud n2 je vynecháno, pak n1 je zkrácen na nula desetinných míst.

n1 může být jakýkoli číselný datový typ nebo jakýkoli nenumerický datový typ, který lze implicitně převést na číselný datový typ.

Příklad

Zde je příklad:

SELECT TRUNC(3.95)
FROM DUAL; 

Výsledek:

 TRUNC(3,95) ______________ 3

Zadejte desetinné místo

Zde je příklad předání druhého argumentu pro určení, na kolik desetinných míst se má hodnota zkrátit:

SELECT TRUNC(1.25817, 2)
FROM DUAL; 

Výsledek:

 TRUNC(1,25817;2) ____________________ 1,25

Zde jsou některé další:

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; 

Výsledek:

 1 2 3 4 ______ _______ ________ _________ 1,2 1,25 1,258 1,2581 

Záporná desetinná místa

Druhý argument může být v případě potřeby záporná hodnota. Předání záporné hodnoty způsobí, že číslice budou vlevo desetinného místa na nulu.

Příklad:

SELECT TRUNC(6973.45, -2)
FROM DUAL; 

Výsledek:

 TRUNC(6973,45,-2) _____________________ 6900

Ve srovnání s ROUND()

TRUNC() funkce se liší od funkce ROUND() funkce. ROUND() funkce v některých případech zaokrouhlí číslo nahoru a v jiných dolů. TRUNC() funkce na druhé straně jednoduše zkrátí číslo bez zaokrouhlení.

Zde je srovnání, které tento rozdíl demonstruje:

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

Výsledek:

 TRUNC(3,6789,2) ROUND(3,6789,2) ___________________ ___________________ 3,67 3,68 

Liší se také od FLOOR() funkce, která vrací největší celé číslo rovné nebo menší než jeho argument. FLOOR() nepřijímá druhý argument jako ROUND() a TRUNC() do (stejně vždy vrací pouze celé číslo).

Nulové hodnoty

Pokud je některý argument null , výsledkem je null :

SET NULL 'null';

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

Výsledek:

 TRUNC(NULL;2) TRUNC(2,35,NULL) TRUNC(NULL,NULL) ________________ ____________________ ___________________ null
 Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT objeví hodnota null. prohlášení. 

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Nečíselné argumenty

Když poskytneme nečíselné argumenty, stane se toto:

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

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT TRUNC('Sto', 'Dva')FROM DUALEHlášení o chybě -ORA-01722:neplatné číslo

Neplatný počet argumentů

Volání TRUNC() s nesprávným počtem argumentů nebo bez argumentu vede k chybě:

SELECT TRUNC()
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT TRUNC()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00938:nedostatek argumentů pro funkci00938. 00000 - "nedostatek argumentů pro funkci"*Příčina:*Akce:

A:

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

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT TRUNC(1, 2, 3)FROM DUALEchyba na příkazovém řádku:1 Sloupec:20Hlášení o chybě -Chyba SQL:ORA-00939:příliš mnoho argumentů pro funkci00939. 00000 - "příliš mnoho argumentů pro funkci"*Příčina:*Akce:

  1. TSQL:Vytvořte pohled, který přistupuje k více databázím

  2. Jak zpětně vytvořit databázi v MySQL Workbench

  3. 3 způsoby, jak převést celé číslo na desítkové v SQL Server

  4. Nekompatibilita Openshift a net-ssh? (2.9.3-beta1 vs 2.9.2)