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: