Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция POWER() в Oracle

В 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да третираме MAX() на празна таблица като 0 вместо NULL

  2. Разширете EM Grid Control до нови възли

  3. как да извикам един съхранен процес от прашник и да модифицирам рекурсора, който се връща?

  4. Кой е най-добрият начин за избягване на неформатирани знаци в to_char на Oracle?

  5. Къде са моите кръпки?