Trong Oracle, LOG()
hàm trả về lôgarit, cơ số n2
, trong tổng số n1
, ở đâu n2
là đối số đầu tiên và n1
là thứ hai.
Cú pháp
Cú pháp như sau:
LOG(n2, n1)
Ở đâu n2
có thể là bất kỳ giá trị dương nào khác với 0
hoặc 1
và n1
là bất kỳ giá trị dương nào.
Ví dụ
Đây là một ví dụ:
SELECT LOG(16, 73)
FROM DUAL;
Kết quả:
LOG(16,73) ___________________________________________ 1.54745613972000430746600429203996036707
Giá trị phủ định
Giá trị âm dẫn đến lỗi "nằm ngoài phạm vi":
SELECT LOG(-16, 73)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LOG(-16, 73) FROM DUAL Error report - ORA-01428: argument '-16' is out of range
Tương tự cho đối số thứ hai:
SELECT LOG(16, -73)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LOG(16, -73) FROM DUAL Error report - ORA-01428: argument '-73' is out of range
Không
Chuyển 0
cũng dẫn đến lỗi "ngoài phạm vi":
SELECT LOG(0, 73)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LOG(0, 73) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Và một lần nữa, điều tương tự cũng áp dụng cho đối số thứ hai:
SELECT LOG(16, 0)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LOG(16, 0) FROM DUAL Error report - ORA-01428: argument '0' is out of range
Vượt qua 1
Chuyển 1
đối với đối số thứ hai cho kết quả là 0
:
SELECT LOG(16, 1)
FROM DUAL;
Kết quả:
LOG(16,1) ____________ 0
Chuyển 1
đối với đối số đầu tiên dẫn đến lỗi "nằm ngoài phạm vi":
SELECT LOG(1, 2)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LOG(1, 2) FROM DUAL Error report - ORA-01428: argument '1' is out of range
Biểu thức
Các đối số có thể bao gồm các biểu thức như sau:
SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;
Kết quả:
LOG(10+6,12*30) ___________________________________________ 2.12296327408241867769444932934625579835
Đối số không phải dạng số
Các đối số có thể là bất kỳ kiểu dữ liệu số nào hoặc bất kỳ kiểu dữ liệu phi số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số.
Dưới đây là một ví dụ về điều gì sẽ xảy ra khi các đối số không đáp ứng tiêu chí đó:
SELECT LOG('Homer', 'Symptom')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT LOG('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
Đối số rỗng
LOG()
trả về null
nếu bất kỳ đối số nào là null
:
SET NULL 'null';
SELECT
LOG(null, 1024),
LOG(16, null),
LOG(null, null)
FROM DUAL;
Kết quả:
LOG(NULL,1024) LOG(16,NULL) LOG(NULL,NULL) _________________ _______________ _________________ null null null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị null xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Thiếu đối số
Đang gọi LOG()
với số lượng đối số sai hoặc không có bất kỳ đối số nào dẫn đến lỗi:
SELECT LOG()
FROM DUAL;
Kết quả:
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:
Và:
SELECT LOG(10, 2, 3)
FROM DUAL;
Kết quả:
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: