sql >> Database >  >> RDS >> Oracle

LN() Functie in Oracle

In Oracle, de LN() functie retourneert de natuurlijke logaritme van zijn argument, waarbij het argument groter is dan 0 .

Met andere woorden, het retourneert de base-e logaritme van zijn argument.

Het nummer e , ook bekend als het getal van Euler, is een wiskundige constante die ongeveer gelijk is aan 2,71828.

Syntaxis

De syntaxis gaat als volgt:

LN(n)

Waar n is elk numeriek gegevenstype of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.

Voorbeeld

Hier is een voorbeeld:

SELECT LN(73)
FROM DUAL;

Resultaat:

                                    LN(73) 
__________________________________________ 
   4.2904594411483911290921088574385425709

Dit is wat we krijgen als we e passeren :

SELECT LN(2.718281828459045235360287471352662497757)
FROM DUAL;

Resultaat:

   LN(2.718281828459045235360287471352662497757) 
________________________________________________ 
                                               1

Het aantal fractionele plaatsen maakt bij dit voorbeeld echter een verschil. Dit gebeurt er als ik het laatste cijfer verwijder:

SELECT LN(2.71828182845904523536028747135266249775)
FROM DUAL;

Resultaat:

   LN(2.71828182845904523536028747135266249775) 
_______________________________________________ 
     0.9999999999999999999999999999999999999963

Negatieve waarden

Negatieve waarden resulteren in een "buiten bereik"-fout:

SELECT LN(-5.490)
FROM DUAL;

Resultaat:

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

Passeren 0 resulteert ook in een "buiten bereik"-fout:

SELECT LN(0)
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LN(0)
FROM DUAL
Error report -
ORA-01428: argument '0' is out of range

Uitdrukkingen

Het argument kan uitdrukkingen als deze bevatten:

SELECT LN(2 * 3)
FROM DUAL;

Resultaat:

                                    LN(2*3) 
___________________________________________ 
   1.79175946922805500081247735838070227272

Niet-numerieke argumenten

Het argument kan elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.

Hier is een voorbeeld van wat er gebeurt als het argument niet aan die criteria voldoet:

SELECT LN('Euler')
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LN('Euler')
FROM DUAL
Error report -
ORA-01722: invalid number

Nullargumenten

LN() retourneert null als het argument null is :

SET NULL 'null';

SELECT LN(null)
FROM DUAL;

Resultaat:

   LN(NULL) 
___________ 
       null 

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Ontbrekende argumenten

Bellen met LN() met het verkeerde aantal argumenten, of zonder argumenten resulteert in een fout:

SELECT LN()
FROM DUAL;

Resultaat:

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:

En:

SELECT LN(10, 2)
FROM DUAL;

Resultaat:

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. Zoek uit of een CHECK-beperking op kolomniveau of op tabelniveau is in SQL Server (T-SQL-voorbeelden)

  2. Wat te controleren als het PostgreSQL-geheugengebruik hoog is?

  3. Oracle SQL-ontwikkelaar en PostgreSQL

  4. Hoe u de ANSI_NULLS-instelling van uw sessie in SQL Server kunt controleren?