sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer LOG() i MariaDB

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'

  1. Oracle 10g - optimer WHERE IS NOT NULL

  2. SQLite Listview onclick filtrerer db for at åbne resulterer i ny aktivitet

  3. ORA-01830:billede i datoformat slutter før konvertering af hele inputstrengen / Vælg sum hvor datoforespørgsel

  4. En begrænsning, der kun tillader en af ​​to tabeller at referere til en basistabel