Trong MariaDB, LOG()
là một hàm tích hợp trả về lôgarit tự nhiên của đối số của nó cho một cơ số nhất định.
Nó có thể được gọi với một hoặc hai đối số:
- Khi được gọi với một đối số, trả về lôgarit tự nhiên của đối số.
- Khi được gọi với hai đối số, trả về logarit của đối số thứ hai về cơ số được chỉ định trong đối số đầu tiên.
Khi được gọi với một đối số, LOG()
là nghịch đảo của EXP()
và nó cũng giống như cách sử dụng LN()
.
Cú pháp
Hàm có thể được sử dụng theo hai cách sau:
LOG(X)
LOG(B,X)
Khi sử dụng cú pháp đầu tiên, hàm trả về lôgarit tự nhiên của X
.
Khi sử dụng cú pháp thứ hai, hàm trả về logarit của X
đến cơ sở B
.
Ví dụ - Cú pháp đối số đơn
Dưới đây là một ví dụ sử dụng cú pháp đối số duy nhất:
SELECT LOG(3);
Kết quả:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Đây là những gì chúng tôi nhận được khi vượt qua e :
SELECT LOG(2.718281828459045);
Kết quả:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
Số e , còn được gọi là số của Euler, là một hằng số toán học xấp xỉ bằng 2,718281828459045…, v.v.
Ví dụ - Cú pháp hai đối số
Dưới đây là một ví dụ sử dụng cú pháp hai đối số:
SELECT LOG(10, 3);
Kết quả:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Đây là giá trị giống nhau khi sử dụng các cơ sở khác nhau:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Kết quả:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Phạm vi đối số
Nếu X
nhỏ hơn hoặc bằng 0
, rồi đến NULL
được trả lại với một cảnh báo.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Kết quả:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Hãy kiểm tra các cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Ngoài ra, cơ sở phải lớn hơn 1
. Nếu không, NULL
được trả lại:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Kết quả:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Kiểm tra các cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Đối số không phải dạng số
Dưới đây là một ví dụ về những gì sẽ xảy ra khi chúng tôi cung cấp các đối số không phải là số:
SELECT LOG('Homer', 'Simpson');
Kết quả:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Hãy xem cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Đối số rỗng
LOG()
trả về null
nếu bất kỳ đối số nào là null
:
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Kết quả:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
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();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
Và:
SELECT LOG(10, 2, 3);
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'