sql >> データベース >  >> RDS >> Oracle

OracleのTRUNC(number)関数

    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:

    1. クエリ中にMySQLサーバーへの接続が失われました

    2. 1つのSQLクエリで複数のカウントを取得するにはどうすればよいですか?

    3. PL/SQLのUPDATEの影響を受ける行数

    4. SQL Server 2008:ユーザー名に特権を付与するにはどうすればよいですか?