Dans Oracle, le SIGN()
la fonction renvoie le signe de son argument sous la forme -1
, 0
, ou 1
, selon que l'argument est négatif, nul ou positif, et aussi selon que l'argument est de type NUMBER
ou un nombre à virgule flottante.
Syntaxe
La syntaxe ressemble à ceci :
SIGN(n)
Où n
peut être n'importe quel type de données numérique, ou n'importe quel type de données non numérique qui peut être implicitement converti en NUMBER
, et renvoie NUMBER
.
Comment déchiffrer le résultat
Le résultat réel dépendra si l'argument est un NUMBER
type, ou un nombre binaire à virgule flottante (BINARY_FLOAT
et BINARY_DOUBLE
).
Pour la valeur de NUMBER
tapez, le signe est :
- -1 si
n
<0 - 0 si
n
=0 - 1 si
n
>0
Pour les nombres binaires à virgule flottante, le SIGN()
La fonction renvoie le bit de signe du nombre. Le bit de signe est :
- -1 si
n
<0 - +1 si
n
>=0 oun
=NaN
Exemple
Dans cet exemple, je passe un NUMBER
saisissez :
SELECT SIGN(78.50)
FROM DUAL;
Résultat :
SIGN(78.50) ______________ 1
Voici un autre exemple pour démontrer diverses sorties avec le NUMBER
saisissez :
SELECT
SIGN(7),
SIGN(0),
SIGN(-7)
FROM DUAL;
Résultat :
SIGN(7) SIGN(0) SIGN(-7) __________ __________ ___________ 1 0 -1
Nombres binaires à virgule flottante
Voici un exemple de ce qui se passe lorsque nous transformons ces nombres en nombres binaires à virgule flottante :
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;
Résultat :
7 0 -7 NaN ____ ____ _____ ______ 1 1 -1 1
J'ai aussi ajouté NaN
à la liste (le binary_float_nan
le littéral à virgule flottante représente une valeur de type BINARY_FLOAT
pour lequel la condition IS
NAN
est vrai).
Arguments non numériques
Voici ce qui se passe lorsque nous passons un argument non numérique qui ne peut pas être converti en un type de données numérique :
SELECT SIGN('Bruce')
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT SIGN('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Valeurs nulles
Passer null
renvoie null
:
SET NULL 'null';
SELECT SIGN(null)
FROM DUAL;
Résultat :
SIGN(NULL) _____________ null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments incorrects
Appel de SIGN()
sans passer d'argument renvoie une erreur :
SELECT SIGN()
FROM DUAL;
Résultat :
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:
Et passer le mauvais nombre d'arguments entraîne une erreur :
SELECT SIGN(2, 3)
FROM DUAL;
Résultat :
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: