In Oracle, de SIGN()
functie retourneert het teken van zijn argument als -1
, 0
, of 1
, afhankelijk van of het argument negatief, nul of positief is, en ook afhankelijk van of het argument van het type NUMBER
is of een getal met drijvende komma.
Syntaxis
De syntaxis gaat als volgt:
SIGN(n)
Waar n
kan elk numeriek gegevenstype zijn, of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar NUMBER
, en retourneert NUMBER
.
Hoe het resultaat te ontcijferen
Het werkelijke resultaat hangt af van het feit of het argument een NUMBER
is type, of een binair getal met drijvende komma (BINARY_FLOAT
en BINARY_DOUBLE
).
Voor waarde van NUMBER
type, het teken is:
- -1 als
n
<0 - 0 als
n
=0 - 1 als
n
>0
Voor binaire getallen met drijvende komma, de SIGN()
functie retourneert het tekenbit van het getal. Het tekenbit is:
- -1 als
n
<0 - +1 als
n
>=0 ofn
=NaN
Voorbeeld
In dit voorbeeld geef ik een NUMBER
. door typ:
SELECT SIGN(78.50)
FROM DUAL;
Resultaat:
SIGN(78.50) ______________ 1
Hier is nog een voorbeeld om verschillende outputs te demonstreren met het NUMBER
typ:
SELECT
SIGN(7),
SIGN(0),
SIGN(-7)
FROM DUAL;
Resultaat:
SIGN(7) SIGN(0) SIGN(-7) __________ __________ ___________ 1 0 -1
Binaire getallen met drijvende komma
Hier is een voorbeeld van wat er gebeurt als we die getallen casten als binaire getallen met drijvende komma:
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;
Resultaat:
7 0 -7 NaN ____ ____ _____ ______ 1 1 -1 1
Ik heb ook NaN
. toegevoegd naar de lijst (de binary_float_nan
letterlijke drijvende komma vertegenwoordigt een waarde van het type BINARY_FLOAT
waarvoor de voorwaarde IS
NAN
is waar).
Niet-numerieke argumenten
Dit is wat er gebeurt als we een niet-numeriek argument doorgeven dat niet kan worden geconverteerd naar een numeriek gegevenstype:
SELECT SIGN('Bruce')
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT SIGN('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Null-waarden
Doorgeven van null
retourneert null
:
SET NULL 'null';
SELECT SIGN(null)
FROM DUAL;
Resultaat:
SIGN(NULL) _____________ null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Onjuist aantal argumenten
SIGN()
. aanroepen zonder het doorgeven van argumenten geeft een fout:
SELECT SIGN()
FROM DUAL;
Resultaat:
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:
En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:
SELECT SIGN(2, 3)
FROM DUAL;
Resultaat:
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: