В MariaDB, LOG()
е вградена функция, която връща естествения логаритъм на своя аргумент към дадена основа.
Може да се извика с един или два аргумента:
- Когато се извиква с един аргумент, връща естествения логаритъм на аргумента.
- Когато се извиква с два аргумента, връща логаритъма на втория аргумент към основата, посочена в първия аргумент.
Когато се извиква с един аргумент, LOG()
е обратен на EXP()
, и това е същото като използването на LN()
.
Синтаксис
Функцията може да се използва по следните два начина:
LOG(X)
LOG(B,X)
Когато използва първия синтаксис, функцията връща естествения логаритъм на X
.
Когато се използва вторият синтаксис, функцията връща логаритъма на X
към основата B
.
Пример – Синтаксис с единичен аргумент
Ето пример, който използва синтаксис на единичен аргумент:
SELECT LOG(3);
Резултат:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Ето какво получаваме, когато преминем e :
SELECT LOG(2.718281828459045);
Резултат:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
Числото e , известен също като числото на Ойлер, е математическа константа, приблизително равна на 2,718281828459045... и така нататък.
Пример – Синтаксис с два аргумента
Ето пример, който използва синтаксиса на два аргумента:
SELECT LOG(10, 3);
Резултат:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Ето една и съща стойност, използвайки различни бази:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Резултат:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Обхвати на аргументи
Ако X
е по-малко или равно на 0
, след това NULL
се връща с предупреждение.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Резултат:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Нека проверим предупрежденията:
SHOW WARNINGS;
Резултат:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Също така основата трябва да е по-голяма от 1
. Ако не, NULL
се връща:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Резултат:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Проверете предупрежденията:
SHOW WARNINGS;
Резултат:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Нечислови аргументи
Ето пример за това какво се случва, когато предоставим нечислови аргументи:
SELECT LOG('Homer', 'Simpson');
Резултат:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Нека видим предупреждението:
SHOW WARNINGS;
Резултат:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Нулеви аргументи
LOG()
връща null
ако някой аргумент е null
:
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Резултат:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
Липсващи аргументи
Извикване на LOG()
с грешен брой аргументи или без никакви аргументи води до грешка:
SELECT LOG();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
И:
SELECT LOG(10, 2, 3);
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'