I Oracle er LOG()
funktion returnerer logaritmen, grundtal n2
, af n1
, hvor n2
er det første argument og n1
er den anden.
Syntaks
Syntaksen ser sådan ud:
LOG(n2, n1)
Hvor n2
kan være enhver anden positiv værdi end 0
eller 1
, og n1
er enhver positiv værdi.
Eksempel
Her er et eksempel:
SELECT LOG(16, 73)
FROM DUAL;
Resultat:
LOG(16,73) ___________________________________________ 1.54745613972000430746600429203996036707
Negative værdier
Negative værdier resulterer i fejlen "uden for område":
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
Samme for det andet argument:
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
Nul
Sender 0
resulterer også i en "uden for rækkevidde"-fejl:
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
Og igen, det samme gælder for det andet argument:
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
Bestået 1
Sender 1
for det andet argument resulterer i 0
:
SELECT LOG(16, 1)
FROM DUAL;
Resultat:
LOG(16,1) ____________ 0
Sender 1
for det første argument resulterer i en "uden for rækkevidde"-fejl:
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
Udtryk
Argumenterne kan indeholde udtryk som dette:
SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;
Resultat:
LOG(10+6,12*30) ___________________________________________ 2.12296327408241867769444932934625579835
Ikke-numeriske argumenter
Argumenterne kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Her er et eksempel på, hvad der sker, når argumenterne ikke opfylder disse 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
Nul-argumenter
LOG()
returnerer null
hvis et argument er 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 returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Manglende argumenter
Kalder LOG()
med det forkerte antal argumenter eller uden argumenter resulterer i en fejl:
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:
Og:
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: