I MariaDB, LOG()
er en indbygget funktion, der returnerer den naturlige logaritme af sit argument til en given base.
Det kan kaldes med et eller to argumenter:
- Når det kaldes med ét argument, returneres den naturlige logaritme af argumentet.
- Når det kaldes med to argumenter, returnerer logaritmen af det andet argument til den base, der er angivet i det første argument.
Når kaldet med et enkelt argument, LOG()
er det omvendte af EXP()
, og det er det samme som at bruge LN()
.
Syntaks
Funktionen kan bruges på følgende to måder:
LOG(X)
LOG(B,X)
Når du bruger den første syntaks, returnerer funktionen den naturlige logaritme af X
.
Når du bruger den anden syntaks, returnerer funktionen logaritmen af X
til basen B
.
Eksempel – Syntaks for enkeltargument
Her er et eksempel, der bruger syntaksen for enkelt argument:
SELECT LOG(3);
Resultat:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Her er, hvad vi får, når vi passerer e :
SELECT LOG(2.718281828459045);
Resultat:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
Nummeret e , også kendt som Eulers tal, er en matematisk konstant omtrent lig med 2,718281828459045... og så videre.
Eksempel – Syntaks med to argumenter
Her er et eksempel, der bruger syntaksen for to argumenter:
SELECT LOG(10, 3);
Resultat:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Her er den samme værdi ved brug af forskellige baser:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Resultat:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Argumentintervaller
Hvis X
er mindre end eller lig med 0
, derefter NULL
returneres med en advarsel.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Resultat:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Lad os tjekke advarslerne:
SHOW WARNINGS;
Resultat:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Basen skal også være større end 1
. Hvis ikke, NULL
returneres:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Resultat:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Tjek advarslerne:
SHOW WARNINGS;
Resultat:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Ikke-numeriske argumenter
Her er et eksempel på, hvad der sker, når vi giver ikke-numeriske argumenter:
SELECT LOG('Homer', 'Simpson');
Resultat:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Lad os se advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Nul-argumenter
LOG()
returnerer null
hvis et argument er null
:
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Resultat:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
Manglende argumenter
Kalder LOG()
med det forkerte antal argumenter eller uden argumenter resulterer i en fejl:
SELECT LOG();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
Og:
SELECT LOG(10, 2, 3);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'