В Oracle, POWER()
функцията връща първия си аргумент, повдигнат до степента на втория си аргумент.
Синтаксис
Синтаксисът е така:
POWER(n2, n1)
Всеки аргумент може да бъде произволен числов тип данни или всеки нечисловен тип данни, който може да бъде имплицитно преобразуван в числов тип данни.
И двата аргумента обаче могат да бъдат произволно число, ако n2
е отрицателен, след това n1
трябва да е цяло число.
Пример
Ето пример за демонстрация:
SELECT POWER(8, 2)
FROM DUAL;
Резултат:
POWER(8,2) _____________ 64
И тук използва дробна част във втория аргумент:
SELECT POWER(8, 2.5)
FROM DUAL;
Резултат:
POWER(8,2.5) __________________________________________ 181.01933598375616624661615669884135406
Използването на дробна част обаче е възможно само когато първият аргумент е положителен.
Отрицателни стойности
Както споменахме, ако първият аргумент е отрицателен, тогава вторият аргумент трябва да е цяло число:
SELECT POWER(-8, 2)
FROM DUAL;
Резултат:
POWER(-8,2) ______________ 64
Ето какво се случва, когато второто число не е цяло число:
SELECT POWER(-8, 2.5)
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT POWER(-8, 2.5) FROM DUAL Error report - ORA-01428: argument '-8' is out of range
Нечислови аргументи
Аргументите могат да бъдат всеки числов тип данни или всеки нечисловен тип данни, които могат да бъдат имплицитно преобразувани в числов тип данни.
Ето пример за това какво се случва, когато аргументите не отговарят на тези критерии:
SELECT POWER('Gosh', 'Dang')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT POWER('Gosh', 'Dang') FROM DUAL Error report - ORA-01722: invalid number
Нулеви аргументи
POWER()
връща null
ако някой аргумент е null
:
SET NULL 'null';
SELECT
POWER(null, 3),
POWER(8, null),
POWER(null, null)
FROM DUAL;
Резултат:
POWER(NULL,3) POWER(8,NULL) POWER(NULL,NULL) ________________ ________________ ___________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Липсващи аргументи
Извикване на POWER()
без никакви аргументи води до грешка:
SELECT POWER()
FROM DUAL;
Резултат:
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:
Същото важи и при извикването му с твърде много аргументи:
SELECT POWER(10, 2, 3)
FROM DUAL;
Резултат:
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: