sql >> Databasteknik >  >> RDS >> MariaDB

Hur LOG() fungerar i MariaDB

I MariaDB, LOG() är en inbyggd funktion som returnerar den naturliga logaritmen för dess argument till en given bas.

Den kan anropas med ett eller två argument:

  • När det anropas med ett argument returneras den naturliga logaritmen för argumentet.
  • När anropas med två argument, returnerar logaritmen för det andra argumentet till basen som anges i det första argumentet.

När anropas med ett enda argument, LOG() är inversen av EXP() , och det är samma sak som att använda LN() .

Syntax

Funktionen kan användas på följande två sätt:

LOG(X)
LOG(B,X)

När du använder den första syntaxen returnerar funktionen den naturliga logaritmen för X .

När du använder den andra syntaxen returnerar funktionen logaritmen för X till basen B .

Exempel – Syntax för enstaka argument

Här är ett exempel som använder syntaxen för enstaka argument:

SELECT LOG(3);

Resultat:

+--------------------+
| LOG(3)             |
+--------------------+
| 1.0986122886681098 |
+--------------------+

Det här är vad vi får när vi passerar e :

SELECT LOG(2.718281828459045);

Resultat:

+------------------------+
| LOG(2.718281828459045) |
+------------------------+
|                      1 |
+------------------------+

Siffran e , även känd som Eulers tal, är en matematisk konstant som är ungefär lika med 2,718281828459045... och så vidare.

Exempel – Syntax med två argument

Här är ett exempel som använder syntaxen för två argument:

SELECT LOG(10, 3);

Resultat:

+--------------------+
| LOG(3)             |
+--------------------+
| 1.0986122886681098 |
+--------------------+

Här är samma värde med olika 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 |
+--------------------+--------------------+--------------------+

Argumentintervall

Om X är mindre än eller lika med 0 , sedan NULL returneras med en varning.

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)

Låt oss kontrollera varningarna:

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 |
+---------+------+---------------+

Dessutom måste basen vara större än 1 . Om inte, NULL returneras:

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)

Kontrollera varningarna:

SHOW WARNINGS;

Resultat:

+---------+------+---------------+
| Level   | Code | Message       |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
+---------+------+---------------+

Icke-numeriska argument

Här är ett exempel på vad som händer när vi tillhandahåller icke-numeriska argument:

SELECT LOG('Homer', 'Simpson');

Resultat:

+-------------------------+
| LOG('Homer', 'Simpson') |
+-------------------------+
|                    NULL |
+-------------------------+
1 row in set, 2 warnings (0.000 sec)

Låt oss se varningen:

SHOW WARNINGS;

Resultat:

+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' |
| Warning | 1365 | Division by 0                             |
+---------+------+-------------------------------------------+

Nollargument

LOG() returnerar null om något argument är 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 |
+-----------+--------------+---------------+-----------------+

Argument saknas

Anropar LOG() med fel antal argument, eller utan några argument resulterar i ett fel:

SELECT LOG();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'

Och:

SELECT LOG(10, 2, 3);

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'

  1. Hur man ansluter flera databaser i PHP, MYSQLi &PDO

  2. PL/SQL Stark referensmarkör med användardefinierad postdatatyp

  3. Entity Framework Code Först med SQL Server-synonymer

  4. 4 sätt att hitta rader som innehåller små bokstäver i Oracle