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: