sql >> Database teknologi >  >> RDS >> Oracle

LN() Funktion i Oracle

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:

  1. Trin for trin opgraderingsproces for R12.2 Upgrade Part -4 (anvender 12.2.x Release Update Pack)

  2. Hvorfor denne dvale-skabelon bulkUpdate ikke virker

  3. Oprettelse af en trigger for underordnet tabelindsættelse returnerer en forvirrende fejl

  4. underforespørgsel i FROM skal have et alias