W Oracle LOG()
funkcja zwraca logarytm o podstawie n2
, z n1
, gdzie n2
jest pierwszym argumentem i n1
jest drugi.
Składnia
Składnia wygląda tak:
LOG(n2, n1)
Gdzie n2
może być dowolną wartością dodatnią inną niż 0
lub 1
i n1
jest dowolną wartością dodatnią.
Przykład
Oto przykład:
SELECT LOG(16, 73)
FROM DUAL;
Wynik:
LOG(16,73) ___________________________________________ 1.54745613972000430746600429203996036707
Wartości ujemne
Wartości ujemne skutkują błędem „poza zakresem”:
SELECT LOG(-16, 73)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT LOG(-16, 73) FROM DUAL Error report - ORA-01428: argument '-16' is out of range
To samo dla drugiego argumentu:
SELECT LOG(16, -73)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT LOG(16, -73) FROM DUAL Error report - ORA-01428: argument '-73' is out of range
Zero
Przekazywanie 0
powoduje również błąd „poza zakresem”:
SELECT LOG(0, 73)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT LOG(0, 73) FROM DUAL Error report - ORA-01428: argument '0' is out of range
I znowu, to samo dotyczy drugiego argumentu:
SELECT LOG(16, 0)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT LOG(16, 0) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Przekazanie 1
Przekazywanie 1
dla drugiego argumentu daje wynik 0
:
SELECT LOG(16, 1)
FROM DUAL;
Wynik:
LOG(16,1) ____________ 0
Przekazywanie 1
dla pierwszego argumentu pojawia się błąd „poza zakresem”:
SELECT LOG(1, 2)
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT LOG(1, 2) FROM DUAL Error report - ORA-01428: argument '1' is out of range
Wyrażenia
Argumenty mogą zawierać wyrażenia takie jak:
SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;
Wynik:
LOG(10+6,12*30) ___________________________________________ 2.12296327408241867769444932934625579835
Argumenty nieliczbowe
Argumentami może być dowolny numeryczny typ danych lub dowolny nienumeryczny typ danych, który można niejawnie przekonwertować na numeryczny typ danych.
Oto przykład tego, co się dzieje, gdy argumenty nie spełniają tych kryteriów:
SELECT LOG('Homer', 'Symptom')
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT LOG('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Argumenty zerowe
LOG()
zwraca null
jeśli jakikolwiek argument jest null
:
SET NULL 'null';
SELECT
LOG(null, 1024),
LOG(16, null),
LOG(null, null)
FROM DUAL;
Wynik:
LOG(NULL,1024) LOG(16,NULL) LOG(NULL,NULL) _________________ _______________ _________________ null null null
Domyślnie SQLcl i SQL*Plus zwracają spację za każdym razem, gdy w wyniku polecenia SQL SELECT
wystąpi wartość null oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Brakujące argumenty
Wywołanie LOG()
z niewłaściwą liczbą argumentów lub bez żadnych argumentów powoduje błąd:
SELECT LOG()
FROM DUAL;
Wynik:
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:
Oraz:
SELECT LOG(10, 2, 3)
FROM DUAL;
Wynik:
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: