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

Hàm LN () trong Oracle

Trong Oracle, LN() hàm trả về lôgarit tự nhiên của đối số của nó, trong đó đối số lớn hơn 0 .

Nói cách khác, nó trả về base- e logarit của đối số của nó.

Số e , còn được gọi là số Euler, là một hằng số toán học xấp xỉ bằng 2,71828.

Cú pháp

Cú pháp như sau:

LN(n)

Ở đâu n là bất kỳ kiểu dữ liệu số hoặc bất kỳ kiểu dữ liệu phi số nào có thể được chuyển đổi hoàn toàn sang kiểu dữ liệu số.

Ví dụ

Đây là một ví dụ:

SELECT LN(73)
FROM DUAL;

Kết quả:

                                    LN(73) 
__________________________________________ 
   4.2904594411483911290921088574385425709

Đây là những gì chúng tôi nhận được khi vượt qua e :

SELECT LN(2.718281828459045235360287471352662497757)
FROM DUAL;

Kết quả:

   LN(2.718281828459045235360287471352662497757) 
________________________________________________ 
                                               1

Tuy nhiên, số lượng vị trí phân số tạo ra sự khác biệt với ví dụ này. Đây là những gì sẽ xảy ra khi tôi xóa chữ số cuối cùng:

SELECT LN(2.71828182845904523536028747135266249775)
FROM DUAL;

Kết quả:

   LN(2.71828182845904523536028747135266249775) 
_______________________________________________ 
     0.9999999999999999999999999999999999999963

Giá trị phủ định

Giá trị âm dẫn đến lỗi "nằm ngoài phạm vi":

SELECT LN(-5.490)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LN(-5.490)
FROM DUAL
Error report -
ORA-01428: argument '-5.49' is out of range

Không

Chuyển 0 cũng dẫn đến lỗi "ngoài phạm vi":

SELECT LN(0)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LN(0)
FROM DUAL
Error report -
ORA-01428: argument '0' is out of range

Biểu thức

Đối số có thể bao gồm các biểu thức như sau:

SELECT LN(2 * 3)
FROM DUAL;

Kết quả:

                                    LN(2*3) 
___________________________________________ 
   1.79175946922805500081247735838070227272

Đối số không phải dạng số

Đối số có thể là bất kỳ kiểu dữ liệu số hoặc bất kỳ kiểu dữ liệu không phải 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 đối số không đáp ứng tiêu chí đó:

SELECT LN('Euler')
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LN('Euler')
FROM DUAL
Error report -
ORA-01722: invalid number

Đối số rỗng

LN() trả về null nếu đối số là null :

SET NULL 'null';

SELECT LN(null)
FROM DUAL;

Kết quả:

   LN(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ố

Gọi LN() 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 LN()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LN()
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 LN(10, 2)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LN(10, 2)
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. Đặt lại Trình tự theo năm không theo giá trị tối thiểu hoặc giá trị lớn nhất

  2. MySQL tương đương với SEQUENCE.NEXTVAL của Oracle

  3. Các tham chiếu vòng tròn có được chấp nhận trong cơ sở dữ liệu không?

  4. Oracle 11g - Làm thế nào để tối ưu hóa lựa chọn chèn song song chậm?

  5. 24 câu hỏi phỏng vấn người quản lý đồng thời tuyệt vời