sql >> データベース >  >> RDS >> MariaDB

MariaDBでのLOG()のしくみ

    MariaDBでは、LOG() は、引数の自然対数を指定された基数に返す組み込み関数です。

    1つまたは2つの引数で呼び出すことができます:

    • 1つの引数で呼び出されると、引数の自然対数を返します。
    • 2つの引数を指定して呼び出された場合、2番目の引数の対数を最初の引数で指定された底に返します。

    単一の引数で呼び出された場合、LOG() EXP()の逆です 、LN()を使用するのと同じです 。

    構文

    この関数は、次の2つの方法で使用できます。

    LOG(X)
    LOG(B,X)

    最初の構文を使用する場合、関数はXの自然対数を返します 。

    2番目の構文を使用する場合、関数はXの対数を返します。 ベースへB

    例–単一引数の構文

    単一の引数の構文を使用する例を次に示します。

    SELECT LOG(3);

    結果:

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

    eを通過すると次のようになります :

    SELECT LOG(2.718281828459045);

    結果:

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

    番号e 、オイラーの数とも呼ばれ、2.718281828459045などにほぼ等しい数学定数です。

    例–2つの引数の構文

    2つの引数の構文を使用する例を次に示します。

    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'

    1. Oracle Database Security:データベース監査

    2. データベース内のすべてのオブジェクトをカウントします

    3. OracleのストアドプロシージャからResultSetを返す方法は?

    4. SQLException:プロトコル違反。 OracleJDBCDriverの問題