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: