Oracle Databaseでは、TRUNC(number)
関数は、指定された数値を返し、指定された小数点以下の桁数に切り捨てられます。
OracleにはTRUNC(date)
もあります 日付に使用される関数。この記事は、TRUNC(number)
に関するものです。 数値に使用される関数。
構文
構文は次のようになります:
TRUNC(n1 [, n2 ])
ここで、n1
は切り捨てる値であり、n2
n1
に。 n2
省略した場合、n1
小数点以下0桁に切り捨てられます。
n1
任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。
例
次に例を示します:
SELECT TRUNC(3.95)
FROM DUAL;
結果:
TRUNC(3.95) ______________ 3
小数点以下の桁数を指定
2番目の引数を渡して、値を切り捨てる小数点以下の桁数を指定する例を次に示します。
SELECT TRUNC(1.25817, 2)
FROM DUAL;
結果:
TRUNC(1.25817,2) ___________________ 1.25
さらにいくつかあります:
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;
結果:
1 2 3 4 ______ _______ ________ _________ 1.2 1.25 1.258 1.2581
負の小数点以下の桁数
2番目の引数は、必要に応じて負の値にすることができます。負の値を渡すと、左に数字が表示されます 小数点以下の桁数がゼロになります。
例:
SELECT TRUNC(6973.45, -2)
FROM DUAL;
結果:
TRUNC(6973.45,-2) ____________________ 6900
ROUND()
との比較
TRUNC()
関数はROUND()
とは異なります 働き。 ROUND()
関数は、数値を切り上げる場合と切り下げる場合があります。 TRUNC()
一方、関数は、四捨五入せずに数値を切り捨てるだけです。
この違いを示すための比較は次のとおりです。
SELECT
TRUNC(3.6789, 2),
ROUND(3.6789, 2)
FROM DUAL;
結果:
TRUNC(3.6789,2) ROUND(3.6789,2) __________________ __________________ 3.67 3.68
FLOOR()
とも異なります 関数。引数以下の最大の整数を返します。 FLOOR()
ROUND()
のような2番目の引数を受け入れません およびTRUNC()
実行します(とにかく整数のみを返します)。
ヌル値
引数がnull
の場合 、結果はnull
です :
SET NULL 'null';
SELECT
TRUNC(null, 2),
TRUNC(2.35, null),
TRUNC(null, null)
FROM DUAL;
結果:
TRUNC(NULL,2) TRUNC(2.35,NULL) TRUNC(NULL,NULL) ________________ ___________________ ___________________ null null null
デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECT
の結果としてnull値が発生するたびに空白を返します。 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
非数値引数
数値以外の引数を指定すると、次のようになります。
SELECT TRUNC('Hundred', 'Two')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT TRUNC('Hundred', 'Two') FROM DUAL Error report - ORA-01722: invalid number
無効な引数カウント
TRUNC()
の呼び出し 引数の数が間違っているか、引数がないとエラーが発生します:
SELECT TRUNC()
FROM DUAL;
結果:
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:
そして:
SELECT TRUNC(1, 2, 3)
FROM DUAL;
結果:
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: