sql >> Database >  >> RDS >> MariaDB

Hoe LOG() werkt in MariaDB

In MariaDB, LOG() is een ingebouwde functie die de natuurlijke logaritme van zijn argument retourneert naar een gegeven grondtal.

Het kan worden aangeroepen met een of twee argumenten:

  • Wanneer aangeroepen met één argument, wordt de natuurlijke logaritme van het argument geretourneerd.
  • Als het wordt aangeroepen met twee argumenten, wordt de logaritme van het tweede argument geretourneerd naar het grondtal dat is opgegeven in het eerste argument.

Wanneer aangeroepen met een enkel argument, LOG() is het omgekeerde van EXP() , en het is hetzelfde als het gebruik van LN() .

Syntaxis

De functie kan op de volgende twee manieren worden gebruikt:

LOG(X)
LOG(B,X)

Wanneer de eerste syntaxis wordt gebruikt, retourneert de functie de natuurlijke logaritme van X .

Bij gebruik van de tweede syntaxis, retourneert de functie de logaritme van X naar de basis B .

Voorbeeld – Syntaxis van één argument

Hier is een voorbeeld dat de syntaxis van één argument gebruikt:

SELECT LOG(3);

Resultaat:

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

Dit is wat we krijgen als we e passeren :

SELECT LOG(2.718281828459045);

Resultaat:

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

Het nummer e , ook bekend als het getal van Euler, is een wiskundige constante die ongeveer gelijk is aan 2,718281828459045... enzovoort.

Voorbeeld – Syntaxis met twee argumenten

Hier is een voorbeeld dat de syntaxis van twee argumenten gebruikt:

SELECT LOG(10, 3);

Resultaat:

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

Hier is dezelfde waarde met verschillende basen:

SELECT 
    LOG(8, 3),
    LOG(16, 3),
    LOG(2, 3);

Resultaat:

+--------------------+--------------------+--------------------+
| LOG(8, 3)          | LOG(16, 3)         | LOG(2, 3)          |
+--------------------+--------------------+--------------------+
| 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 |
+--------------------+--------------------+--------------------+

Argumentbereiken

Als X is kleiner dan of gelijk aan 0 , dan NULL wordt geretourneerd met een waarschuwing.

SELECT 
    LOG(0),
    LOG(-1),
    LOG(16, -3),
    LOG(2, -3);

Resultaat:

+--------+---------+-------------+------------+
| LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) |
+--------+---------+-------------+------------+
|   NULL |    NULL |        NULL |       NULL |
+--------+---------+-------------+------------+
1 row in set, 4 warnings (0.001 sec)

Laten we de waarschuwingen eens bekijken:

SHOW WARNINGS;

Resultaat:

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

Ook moet het grondtal groter zijn dan 1 . Zo niet, NULL wordt geretourneerd:

SELECT 
    LOG(0, 3),
    LOG(1, 3),
    LOG(-1, 3);

Resultaat:

+-----------+-----------+------------+
| LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) |
+-----------+-----------+------------+
|      NULL |      NULL |       NULL |
+-----------+-----------+------------+
1 row in set, 3 warnings (0.000 sec)

Controleer de waarschuwingen:

SHOW WARNINGS;

Resultaat:

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

Niet-numerieke argumenten

Hier is een voorbeeld van wat er gebeurt als we niet-numerieke argumenten geven:

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

Resultaat:

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

Laten we eens kijken naar de waarschuwing:

SHOW WARNINGS;

Resultaat:

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

Nullargumenten

LOG() retourneert null als een argument null is :

SELECT 
    LOG(null),
    LOG(null, 3),
    LOG(16, null),
    LOG(null, null);

Resultaat:

+-----------+--------------+---------------+-----------------+
| LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) |
+-----------+--------------+---------------+-----------------+
|      NULL |         NULL |          NULL |            NULL |
+-----------+--------------+---------------+-----------------+

Ontbrekende argumenten

LOG() . aanroepen met het verkeerde aantal argumenten, of zonder argumenten resulteert in een fout:

SELECT LOG();

Resultaat:

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

En:

SELECT LOG(10, 2, 3);

Resultaat:

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

  1. SQL Server 2016:altijd versleuteld

  2. De ALTER TABLE-instructie was in strijd met de FOREIGN KEY-beperking

  3. schuine streep voor elk citaatprobleem

  4. DBaaS, cloud en transparante queryrouting