Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm LOG () trong Oracle

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 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:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào tôi có thể lấy số lượng bản ghi bị ảnh hưởng bởi một quy trình được lưu trữ?

  2. mẫu tên không hợp lệ khi cố gắng chuyển ánh xạ đối tượng loại oracle tùy chỉnh

  3. Làm cách nào để đưa ra nhiều điều kiện trong toán tử LIKE?

  4. Trích xuất tổng số giây từ một kiểu dữ liệu khoảng thời gian

  5. Cách trả lại số giây phân số từ giá trị ngày giờ trong Oracle