sql >> Databáze >  >> RDS >> Oracle

Funkce LOG() v Oracle

V Oracle, LOG() funkce vrací logaritmus, základ n2 , z n1 , kde n2 je první argument a n1 je druhý.

Syntaxe

Syntaxe vypadá takto:

LOG(n2, n1)

Kde n2 může být jakákoli kladná hodnota jiná než 0 nebo 1 a n1 je jakákoli kladná hodnota.

Příklad

Zde je příklad:

SELECT LOG(16, 73)
FROM DUAL;

Výsledek:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Záporné hodnoty

Záporné hodnoty vedou k chybě „mimo rozsah“:

SELECT LOG(-16, 73)
FROM DUAL;

Výsledek:

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

Totéž pro druhý argument:

SELECT LOG(16, -73)
FROM DUAL;

Výsledek:

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

Nula

Předání 0 také vede k chybě „mimo rozsah“:

SELECT LOG(0, 73)
FROM DUAL;

Výsledek:

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

A znovu, totéž platí pro druhý argument:

SELECT LOG(16, 0)
FROM DUAL;

Výsledek:

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

Absolvování 1

Předání 1 pro druhý argument je výsledkem 0 :

SELECT LOG(16, 1)
FROM DUAL;

Výsledek:

   LOG(16,1) 
____________ 
           0

Předání 1 u prvního argumentu dojde k chybě „mimo rozsah“:

SELECT LOG(1, 2)
FROM DUAL;

Výsledek:

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

Výrazy

Argumenty mohou obsahovat výrazy jako je tento:

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

Výsledek:

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

Nečíselné argumenty

Argumenty mohou být jakýkoli číselný datový typ nebo jakýkoli nenumerický datový typ, který lze implicitně převést na číselný datový typ.

Zde je příklad toho, co se stane, když argumenty nesplňují tato kritéria:

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

Výsledek:

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

Nulové argumenty

LOG() vrátí null pokud je nějaký argument null :

SET NULL 'null';

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

Výsledek:

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

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT objeví hodnota null. prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Chybí argumenty

Volání LOG() s nesprávným počtem argumentů nebo bez jakýchkoli argumentů vede k chybě:

SELECT LOG()
FROM DUAL;

Výsledek:

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:

A:

SELECT LOG(10, 2, 3)
FROM DUAL;

Výsledek:

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. Aktualizace tabulky v Oracle, pokud je nějaká hodnota pole nulová a určení, zda je aktualizace úspěšná

  2. Python 3.4.0 s databází MySQL

  3. Jak používat nativní heslo s MySQL 5.7

  4. Příklad autonomní transakce Oracle