In Oracle, de LOG()
functie retourneert de logaritme, grondtal n2
, van n1
, waarbij n2
is het eerste argument en n1
is de tweede.
Syntaxis
De syntaxis gaat als volgt:
LOG(n2, n1)
Waar n2
kan elke positieve waarde zijn behalve 0
of 1
, en n1
is een positieve waarde.
Voorbeeld
Hier is een voorbeeld:
SELECT LOG(16, 73)
FROM DUAL;
Resultaat:
LOG(16,73) ___________________________________________ 1.54745613972000430746600429203996036707
Negatieve waarden
Negatieve waarden resulteren in een "buiten bereik"-fout:
SELECT LOG(-16, 73)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LOG(-16, 73) FROM DUAL Error report - ORA-01428: argument '-16' is out of range
Hetzelfde voor het tweede argument:
SELECT LOG(16, -73)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LOG(16, -73) FROM DUAL Error report - ORA-01428: argument '-73' is out of range
Nul
Passen 0
resulteert ook in een "buiten bereik"-fout:
SELECT LOG(0, 73)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LOG(0, 73) FROM DUAL Error report - ORA-01428: argument '0' is out of range
En nogmaals, hetzelfde geldt voor het tweede argument:
SELECT LOG(16, 0)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LOG(16, 0) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Passen 1
Passen voor 1
voor het tweede argument resulteert in 0
:
SELECT LOG(16, 1)
FROM DUAL;
Resultaat:
LOG(16,1) ____________ 0
Passen voor 1
voor het eerste argument resulteert in een "buiten bereik"-fout:
SELECT LOG(1, 2)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LOG(1, 2) FROM DUAL Error report - ORA-01428: argument '1' is out of range
Uitdrukkingen
De argumenten kunnen uitdrukkingen als deze bevatten:
SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;
Resultaat:
LOG(10+6,12*30) ___________________________________________ 2.12296327408241867769444932934625579835
Niet-numerieke argumenten
De argumenten kunnen elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.
Hier is een voorbeeld van wat er gebeurt als de argumenten niet aan die criteria voldoen:
SELECT LOG('Homer', 'Symptom')
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT LOG('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Nullargumenten
LOG()
retourneert null
als een argument null
is :
SET NULL 'null';
SELECT
LOG(null, 1024),
LOG(16, null),
LOG(null, null)
FROM DUAL;
Resultaat:
LOG(NULL,1024) LOG(16,NULL) LOG(NULL,NULL) _________________ _______________ _________________ null null null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Ontbrekende argumenten
LOG()
. aanroepen met het verkeerde aantal argumenten, of zonder argumenten resulteert in een fout:
SELECT LOG()
FROM DUAL;
Resultaat:
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:
En:
SELECT LOG(10, 2, 3)
FROM DUAL;
Resultaat:
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: