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

OracleのMOD()関数

    Oracleでは、MOD() 関数はモジュロ演算を返します。つまり、最初の引数の余りを2番目の引数で割った値を返します。

    構文

    構文は次のようになります:

    MOD(n2, n1)

    各引数は、任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。

    次に例を示します:

    SELECT MOD(100, 6)
    FROM DUAL;

    結果:

       MOD(100,6) 
    _____________ 
                4

    Oracle MOD()と従来のモジュラス

    OracleのMOD() n1の積の場合、関数は従来の数学モジュラス関数とは異なる動作をします。 およびn2 負です。

    これらのそれぞれがどのように異なるかを示す例を次に示します。

    SELECT 
        MOD(100, 6) AS "Oracle MOD()",
        100 - 6 * FLOOR(100/6) AS "Classical"
    FROM DUAL
    
    UNION ALL
    
    SELECT 
        MOD(100, -6),
        100 - -6 * FLOOR(100/-6)
    FROM DUAL
    
    UNION ALL
    
    SELECT 
        MOD(-100, 6),
        -100 - 6 * FLOOR(-100/6)
    FROM DUAL
    
    UNION ALL
    
    SELECT 
        MOD(-100, -6),
        -100 - -6 * FLOOR(-100/-6)
    FROM DUAL;

    結果:

    Oracle MOD()  Classical
    ____________  _________
               4	      4
               4	     -2
              -4	      2
              -4	     -4

    非数値引数

    引数は、任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。

    引数がその基準を満たさない場合に何が起こるかの例を次に示します。

    SELECT MOD('Homer', 'Symptom')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT MOD('Homer', 'Symptom')
    FROM DUAL
    Error report -
    ORA-01722: invalid number

    ヌル引数

    MOD() nullを返します 引数がnullの場合 :

    SET NULL 'null';
    
    SELECT 
        MOD(null, 16),
        MOD(1024, null),
        MOD(null, null)
    FROM DUAL;

    結果:

       MOD(NULL,16)    MOD(1024,NULL)    MOD(NULL,NULL) 
    _______________ _________________ _________________ 
               null              null              null 

    デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECTの結果としてnull値が発生するたびに空白を返します。 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    引数がありません

    MOD()の呼び出し 引数の数が間違っているか、引数がない場合、エラーが発生します:

    SELECT MOD()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT MOD()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    そして:

    SELECT MOD(10, 2, 3)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT MOD(10, 2, 3)
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    1. #tempテーブル作成追跡のオーバーヘッド

    2. 正しいユーザー名とパスワードを指定して、ORA-01017を取得します。無効なユーザー名/パスワード。ログオンが拒否されました

    3. PostgreSQLVALUESコマンドの説明

    4. 例外:この接続に関連付けられている開いているDataReaderがすでにあり、最初に閉じる必要があります