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

OracleのSIGN()関数

    Oracleでは、SIGN() 関数は、引数の符号を-1として返します。 、0 、または1 、引数が負、ゼロ、または正のいずれであるか、および引数のタイプがNUMBERであるかどうかによって異なります。 または浮動小数点数。

    構文

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

    SIGN(n)

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

    結果を解読する方法

    実際の結果は、引数がNUMBERであるかどうかによって異なります。 タイプ、または2進浮動小数点数(BINARY_FLOAT およびBINARY_DOUBLE

    NUMBERの値の場合 タイプ、記号は次のとおりです:

    • -1 if n <0
    • 0 if n =0
    • 1 if n > 0

    バイナリ浮動小数点数の場合、SIGN() 関数は数値の符号ビットを返します。符号ビットは次のとおりです。

    • -1 if n <0
    • +1 if n >=0またはn =NaN

    この例では、NUMBERを渡します タイプ:

    SELECT SIGN(78.50)
    FROM DUAL;

    結果:

       SIGN(78.50) 
    ______________ 
                 1

    NUMBERを使用してさまざまな出力を示す別の例を次に示します。 タイプ:

    SELECT 
        SIGN(7),
        SIGN(0),
        SIGN(-7)
    FROM DUAL;

    結果:

       SIGN(7)    SIGN(0)    SIGN(-7) 
    __________ __________ ___________ 
             1          0          -1

    バイナリ浮動小数点数

    これらの数値を2進浮動小数点数としてキャストするとどうなるかの例を次に示します。

    SELECT 
        SIGN(CAST(7 AS BINARY_FLOAT)) AS "7",
        SIGN(CAST(0 AS BINARY_FLOAT)) AS "0",
        SIGN(CAST(-7 AS BINARY_FLOAT)) AS "-7",
        SIGN(binary_float_nan) AS "NaN"
    FROM DUAL;

    結果:

       7    0    -7    NaN 
    ____ ____ _____ ______ 
       1    1    -1      1 

    NaNも追加しました リストに(binary_float_nan 浮動小数点リテラルは、タイプBINARY_FLOATの値を表します 条件IS NAN 本当です。

    非数値引数

    数値データ型に変換できない非数値引数を渡すと、次のようになります。

    SELECT SIGN('Bruce')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT SIGN('Bruce')
    FROM DUAL
    Error report -
    ORA-01722: invalid number

    ヌル値

    nullを渡す nullを返します :

    SET NULL 'null';
    
    SELECT SIGN(null)
    FROM DUAL;

    結果:

       SIGN(NULL) 
    _____________ 
             null

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

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

    引数の数が正しくありません

    SIGN()の呼び出し 引数を渡さないとエラーが返されます:

    SELECT SIGN()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT SIGN()
    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 SIGN(2, 3)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT SIGN(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. [01000] [unixODBC][ドライバーマネージャー]libを開けません'/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so':ファイルが見つかりません

    2. AWSおよびOracleCloudPlatform上のデータベースサービス

    3. Oracle11gでのXMLtable

    4. SQLでDENSE_RANK()を使用して行にランキング位置を追加する方法