sql >> Databasteknik >  >> RDS >> Oracle

LN() Funktion i Oracle

I Oracle, LN() funktion returnerar den naturliga logaritmen för dess argument, där argumentet är större än 0 .

Med andra ord returnerar den basen-e logaritm för dess argument.

Siffran e , även känt som Eulers tal, är en matematisk konstant ungefär lika med 2,71828.

Syntax

Syntaxen ser ut så här:

LN(n)

Där n är valfri numerisk datatyp eller icke-numerisk datatyp som implicit kan konverteras till en numerisk datatyp.

Exempel

Här är ett exempel:

SELECT LN(73)
FROM DUAL;

Resultat:

                                    LN(73) 
__________________________________________ 
   4.2904594411483911290921088574385425709

Det här är vad vi får när vi passerar e :

SELECT LN(2.718281828459045235360287471352662497757)
FROM DUAL;

Resultat:

   LN(2.718281828459045235360287471352662497757) 
________________________________________________ 
                                               1

Antalet bråkdelar gör dock skillnad med detta exempel. Så här händer när jag tar bort den sista siffran:

SELECT LN(2.71828182845904523536028747135266249775)
FROM DUAL;

Resultat:

   LN(2.71828182845904523536028747135266249775) 
_______________________________________________ 
     0.9999999999999999999999999999999999999963

Negativa värden

Negativa värden resulterar i felet "utom intervallet":

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

Noll

Skickar 0 resulterar också i felet "utanför intervallet":

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

Uttryck

Argumentet kan innehålla uttryck som detta:

SELECT LN(2 * 3)
FROM DUAL;

Resultat:

                                    LN(2*3) 
___________________________________________ 
   1.79175946922805500081247735838070227272

Icke-numeriska argument

Argumentet 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 argumentet inte uppfyller dessa 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

Nollargument

LN() returnerar null om argumentet är null :

SET NULL 'null';

SELECT LN(null)
FROM DUAL;

Resultat:

   LN(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 LN() med fel antal argument, eller utan några argument resulterar i ett fel:

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:

Och:

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. Hur använder man GROUP BY för att sammanfoga strängar i SQL Server?

  2. Hur man beräknar löpande totalsumma i MySQL

  3. Funktion för att returnera dynamisk uppsättning kolumner för given tabell

  4. Anslutningssträngparametrar för sparade specifikationer