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: