I Oracle er LN()
funktion returnerer den naturlige logaritme af sit argument, hvor argumentet er større end 0
.
Med andre ord returnerer den base-e logaritme af dets argument.
Nummeret e , også kendt som Eulers tal, er en matematisk konstant omtrent lig med 2,71828.
Syntaks
Syntaksen ser sådan ud:
LN(n)
Hvor n
er enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Eksempel
Her er et eksempel:
SELECT LN(73)
FROM DUAL;
Resultat:
LN(73) __________________________________________ 4.2904594411483911290921088574385425709
Her er, hvad vi får, når vi passerer e :
SELECT LN(2.718281828459045235360287471352662497757)
FROM DUAL;
Resultat:
LN(2.718281828459045235360287471352662497757) ________________________________________________ 1
Antallet af brøkpladser gør dog en forskel med dette eksempel. Her er, hvad der sker, når jeg fjerner det sidste ciffer:
SELECT LN(2.71828182845904523536028747135266249775)
FROM DUAL;
Resultat:
LN(2.71828182845904523536028747135266249775) _______________________________________________ 0.9999999999999999999999999999999999999963
Negative værdier
Negative værdier resulterer i fejlen "uden for område":
SELECT LN(-5.490)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LN(-5.490) FROM DUAL Error report - ORA-01428: argument '-5.49' is out of range
Nul
Sender 0
resulterer også i en "uden for rækkevidde"-fejl:
SELECT LN(0)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LN(0) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Udtryk
Argumentet kan indeholde udtryk som dette:
SELECT LN(2 * 3)
FROM DUAL;
Resultat:
LN(2*3) ___________________________________________ 1.79175946922805500081247735838070227272
Ikke-numeriske argumenter
Argumentet 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 argumentet ikke opfylder disse kriterier:
SELECT LN('Euler')
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LN('Euler') FROM DUAL Error report - ORA-01722: invalid number
Nul-argumenter
LN()
returnerer null
hvis argumentet er null
:
SET NULL 'null';
SELECT LN(null)
FROM DUAL;
Resultat:
LN(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 LN()
med det forkerte antal argumenter eller uden argumenter resulterer i en fejl:
SELECT LN()
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LN() 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 LN(10, 2)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT LN(10, 2) 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: