Oracle
 sql >> Datenbank >  >> RDS >> Oracle

LOG()-Funktion in Oracle

In Oracle das LOG() Funktion gibt den Logarithmus zurück, Basis n2 , von n1 , wobei n2 ist das erste Argument und n1 ist die zweite.

Syntax

Die Syntax lautet wie folgt:

LOG(n2, n1)

Wobei n2 kann ein beliebiger positiver Wert außer 0 sein oder 1 , und n1 ist ein beliebiger positiver Wert.

Beispiel

Hier ist ein Beispiel:

SELECT LOG(16, 73)
FROM DUAL;

Ergebnis:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Negative Werte

Negative Werte führen zu einem „out of range“-Fehler:

SELECT LOG(-16, 73)
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT LOG(-16, 73)
FROM DUAL
Error report -
ORA-01428: argument '-16' is out of range

Gleiches gilt für das zweite Argument:

SELECT LOG(16, -73)
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT LOG(16, -73)
FROM DUAL
Error report -
ORA-01428: argument '-73' is out of range

Null

Übergeben von 0 führt auch zu einem „out of range“-Fehler:

SELECT LOG(0, 73)
FROM DUAL;

Ergebnis:

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

Dasselbe gilt wiederum für das zweite Argument:

SELECT LOG(16, 0)
FROM DUAL;

Ergebnis:

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

1 bestanden

Übergeben von 1 für das zweite Argument ergibt sich 0 :

SELECT LOG(16, 1)
FROM DUAL;

Ergebnis:

   LOG(16,1) 
____________ 
           0

Übergeben von 1 für das erste Argument führt zu einem „out of range“-Fehler:

SELECT LOG(1, 2)
FROM DUAL;

Ergebnis:

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

Ausdrücke

Die Argumente können Ausdrücke wie diesen enthalten:

SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;

Ergebnis:

                            LOG(10+6,12*30) 
___________________________________________ 
   2.12296327408241867769444932934625579835 

Nicht numerische Argumente

Die Argumente können ein beliebiger numerischer Datentyp oder ein beliebiger nicht numerischer Datentyp sein, der implizit in einen numerischen Datentyp konvertiert werden kann.

Hier ist ein Beispiel dafür, was passiert, wenn die Argumente dieses Kriterium nicht erfüllen:

SELECT LOG('Homer', 'Symptom')
FROM DUAL;

Ergebnis:

Error starting at line : 1 in command -
SELECT LOG('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Null-Argumente

LOG() gibt null zurück wenn irgendein Argument null ist :

SET NULL 'null';

SELECT 
    LOG(null, 1024),
    LOG(16, null),
    LOG(null, null)
FROM DUAL;

Ergebnis:

   LOG(NULL,1024)    LOG(16,NULL)    LOG(NULL,NULL) 
_________________ _______________ _________________ 
             null            null              null 

Standardmäßig geben SQLcl und SQL*Plus immer dann ein Leerzeichen zurück, wenn als Ergebnis eines SQL SELECT ein Nullwert auftritt Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Fehlende Argumente

Aufruf von LOG() mit der falschen Anzahl von Argumenten oder ohne Argumente führt zu einem Fehler:

SELECT LOG()
FROM DUAL;

Ergebnis:

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:

Und:

SELECT LOG(10, 2, 3)
FROM DUAL;

Ergebnis:

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: