I Oracle er POWER()
funktion returnerer sit første argument hævet til magten af sit andet argument.
Syntaks
Syntaksen ser sådan ud:
POWER(n2, n1)
Hvert argument kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Begge argumenter kan dog være et hvilket som helst tal, hvis n2
er negativ, derefter n1
skal være et heltal.
Eksempel
Her er et eksempel til demonstration:
SELECT POWER(8, 2)
FROM DUAL;
Resultat:
POWER(8,2) _____________ 64
Og her bruger den en brøkdel i det andet argument:
SELECT POWER(8, 2.5)
FROM DUAL;
Resultat:
POWER(8,2.5) __________________________________________ 181.01933598375616624661615669884135406
Det er dog kun muligt at bruge en brøkdel, når det første argument er positivt.
Negative værdier
Som nævnt, hvis det første argument er negativt, så skal det andet argument være et heltal:
SELECT POWER(-8, 2)
FROM DUAL;
Resultat:
POWER(-8,2) ______________ 64
Her er, hvad der sker, når det andet tal ikke er et heltal:
SELECT POWER(-8, 2.5)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT POWER(-8, 2.5) FROM DUAL Error report - ORA-01428: argument '-8' is out of range
Ikke-numeriske argumenter
Argumenterne kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Her er et eksempel på, hvad der sker, når argumenterne ikke opfylder disse kriterier:
SELECT POWER('Gosh', 'Dang')
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT POWER('Gosh', 'Dang') FROM DUAL Error report - ORA-01722: invalid number
Nul-argumenter
POWER()
returnerer null
hvis et argument er null
:
SET NULL 'null';
SELECT
POWER(null, 3),
POWER(8, null),
POWER(null, null)
FROM DUAL;
Resultat:
POWER(NULL,3) POWER(8,NULL) POWER(NULL,NULL) ________________ ________________ ___________________ null null null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Manglende argumenter
Kalder POWER()
uden argumenter resulterer i en fejl:
SELECT POWER()
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT POWER() 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:
Og det samme gælder, når man kalder det med for mange argumenter:
SELECT POWER(10, 2, 3)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT POWER(10, 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: