Di Oracle, LOG()
fungsi mengembalikan logaritma, basis n2
, dari n1
, di mana n2
adalah argumen pertama dan n1
adalah yang kedua.
Sintaks
Sintaksnya seperti ini:
LOG(n2, n1)
Dimana n2
dapat berupa nilai positif apa pun selain 0
atau 1
, dan n1
adalah nilai positif apa pun.
Contoh
Ini contohnya:
SELECT LOG(16, 73)
FROM DUAL;
Hasil:
LOG(16,73) ___________________________________________ 1.54745613972000430746600429203996036707
Nilai Negatif
Nilai negatif menghasilkan kesalahan "di luar jangkauan":
SELECT LOG(-16, 73)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOG(-16, 73) FROM DUAL Error report - ORA-01428: argument '-16' is out of range
Sama untuk argumen kedua:
SELECT LOG(16, -73)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOG(16, -73) FROM DUAL Error report - ORA-01428: argument '-73' is out of range
Nol
Melewati 0
juga menghasilkan kesalahan "di luar jangkauan":
SELECT LOG(0, 73)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOG(0, 73) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Dan lagi, hal yang sama berlaku untuk argumen kedua:
SELECT LOG(16, 0)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOG(16, 0) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Lulus 1
Melewati 1
untuk argumen kedua menghasilkan 0
:
SELECT LOG(16, 1)
FROM DUAL;
Hasil:
LOG(16,1) ____________ 0
Melewati 1
untuk argumen pertama menghasilkan kesalahan "di luar jangkauan":
SELECT LOG(1, 2)
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOG(1, 2) FROM DUAL Error report - ORA-01428: argument '1' is out of range
Ekspresi
Argumen dapat mencakup ekspresi seperti ini:
SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;
Hasil:
LOG(10+6,12*30) ___________________________________________ 2.12296327408241867769444932934625579835
Argumen Non-Numerik
Argumen dapat berupa tipe data numerik apa pun atau tipe data nonnumerik apa pun yang dapat secara implisit dikonversi ke tipe data numerik.
Berikut adalah contoh yang terjadi jika argumen tidak memenuhi kriteria tersebut:
SELECT LOG('Homer', 'Symptom')
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT LOG('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Argumen Null
LOG()
mengembalikan null
jika ada argumen null
:
SET NULL 'null';
SELECT
LOG(null, 1024),
LOG(16, null),
LOG(null, null)
FROM DUAL;
Hasil:
LOG(NULL,1024) LOG(16,NULL) LOG(NULL,NULL) _________________ _______________ _________________ null null null
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai null muncul sebagai hasil dari SELECT
SQL penyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Argumen Tidak Ada
Memanggil LOG()
dengan jumlah argumen yang salah, atau tanpa argumen apa pun menghasilkan kesalahan:
SELECT LOG()
FROM DUAL;
Hasil:
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:
Dan:
SELECT LOG(10, 2, 3)
FROM DUAL;
Hasil:
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: