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: