I Oracle, LOG()
funktion returnerar logaritmen, bas n2
, av n1
, där n2
är det första argumentet och n1
är den andra.
Syntax
Syntaxen ser ut så här:
LOG(n2, n1)
Där n2
kan vara vilket positivt värde som helst än 0
eller 1
och n1
är något positivt värde.
Exempel
Här är ett exempel:
SELECT LOG(16, 73)
FROM DUAL;
Resultat:
LOG(16,73) ___________________________________________ 1.54745613972000430746600429203996036707
Negativa värden
Negativa värden resulterar i felet "utom intervallet":
SELECT LOG(-16, 73)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LOG(-16, 73) FROM DUAL Error report - ORA-01428: argument '-16' is out of range
Samma sak för det andra argumentet:
SELECT LOG(16, -73)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LOG(16, -73) FROM DUAL Error report - ORA-01428: argument '-73' is out of range
Noll
Skickar 0
resulterar också i felet "utanför intervallet":
SELECT LOG(0, 73)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LOG(0, 73) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Och återigen, detsamma gäller för det andra argumentet:
SELECT LOG(16, 0)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LOG(16, 0) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Godkänd 1
Skickar 1
för det andra argumentet resulterar i 0
:
SELECT LOG(16, 1)
FROM DUAL;
Resultat:
LOG(16,1) ____________ 0
Skickar 1
för det första argumentet resulterar i felet "utom intervallet":
SELECT LOG(1, 2)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LOG(1, 2) FROM DUAL Error report - ORA-01428: argument '1' is out of range
Uttryck
Argumenten kan innehålla uttryck som detta:
SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;
Resultat:
LOG(10+6,12*30) ___________________________________________ 2.12296327408241867769444932934625579835
Icke-numeriska argument
Argumenten kan vara vilken numerisk datatyp som helst eller vilken icke-numerisk datatyp som helst som implicit kan konverteras till en numerisk datatyp.
Här är ett exempel på vad som händer när argumenten inte uppfyller dessa kriterier:
SELECT LOG('Homer', 'Symptom')
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LOG('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Nollargument
LOG()
returnerar null
om något argument är null
:
SET NULL 'null';
SELECT
LOG(null, 1024),
LOG(16, null),
LOG(null, null)
FROM DUAL;
Resultat:
LOG(NULL,1024) LOG(16,NULL) LOG(NULL,NULL) _________________ _______________ _________________ null null null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när ett nollvärde inträffar som ett resultat av en SQL SELECT
påstående.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Argument saknas
Anropar LOG()
med fel antal argument, eller utan några argument resulterar i ett fel:
SELECT LOG()
FROM DUAL;
Resultat:
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:
Och:
SELECT LOG(10, 2, 3)
FROM DUAL;
Resultat:
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: