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

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

В Oracle, LOG() функцията връща логаритъма, основа n2 , от n1 , където n2 е първият аргумент и n1 е вторият.

Синтаксис

Синтаксисът е така:

LOG(n2, n1)

Където n2 може да бъде всяка положителна стойност, различна от 0 или 1 и n1 е всяка положителна стойност.

Пример

Ето един пример:

SELECT LOG(16, 73)
FROM DUAL;

Резултат:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Отрицателни стойности

Отрицателните стойности водят до грешка „извън обхвата“:

SELECT LOG(-16, 73)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG(-16, 73)
FROM DUAL
Error report -
ORA-01428: argument '-16' is out of range

Същото за втория аргумент:

SELECT LOG(16, -73)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG(16, -73)
FROM DUAL
Error report -
ORA-01428: argument '-73' is out of range

Нула

Подаване на 0 също води до грешка „извън обхвата“:

SELECT LOG(0, 73)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG(0, 73)
FROM DUAL
Error report -
ORA-01428: argument '0' is out of range

И отново, същото важи и за втория аргумент:

SELECT LOG(16, 0)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG(16, 0)
FROM DUAL
Error report -
ORA-01428: argument '0' is out of range

Подаване на 1

Подаване на 1 за втория аргумент води до 0 :

SELECT LOG(16, 1)
FROM DUAL;

Резултат:

   LOG(16,1) 
____________ 
           0

Подаване на 1 за първия аргумент води до грешка „извън обхвата“:

SELECT LOG(1, 2)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG(1, 2)
FROM DUAL
Error report -
ORA-01428: argument '1' is out of range

Изрази

Аргументите могат да включват изрази като този:

SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;

Резултат:

                            LOG(10+6,12*30) 
___________________________________________ 
   2.12296327408241867769444932934625579835 

Нечислови аргументи

Аргументите могат да бъдат всеки числов тип данни или всеки нечисловен тип данни, които могат да бъдат имплицитно преобразувани в числов тип данни.

Ето пример за това какво се случва, когато аргументите не отговарят на тези критерии:

SELECT LOG('Homer', 'Symptom')
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Нулеви аргументи

LOG() връща null ако някой аргумент е null :

SET NULL 'null';

SELECT 
    LOG(null, 1024),
    LOG(16, null),
    LOG(null, null)
FROM DUAL;

Резултат:

   LOG(NULL,1024)    LOG(16,NULL)    LOG(NULL,NULL) 
_________________ _______________ _________________ 
             null            null              null 

По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Липсващи аргументи

Извикване на LOG() с грешен брой аргументи или без никакви аргументи води до грешка:

SELECT LOG()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG()
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 LOG(10, 2, 3)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOG(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. Използване на Substr с Instr за извличане на низ в Oracle

  2. TEMPFILE Офлайн физическа готовност

  3. Oracle Еквивалент на MySQL INSERT IGNORE?

  4. Как работи ROWNUM в заявка за пагинация?

  5. Какво е точно BLOB в контекста на СУБД