Calculates the logarithm of x whose base number is base.
Syntax
double log(<base>, <x>)
Parameters
base: required. The base number. The value is of the DOUBLE or DECIMAL type. If the input value is of the STRING or BIGINT type, the value is implicitly converted into a value of the DOUBLE type before calculation.
x: required. The value for which the logarithm is calculated. The value is of the DOUBLE or DECIMAL type. If the input value is of the STRING or BIGINT type, the value is implicitly converted into a value of the DOUBLE type before calculation.
Return value
A value of the DOUBLE type is returned. The return value varies based on the following rules:
If the value of base or x is null, null is returned.
If the value of base or x is a negative value or 0, null is returned.
If the value of base is 1, null is returned. The value 1 causes division by zero.
Sample data
This section provides sample source data and examples for you to understand how to use the functions. In this topic, a table named mf_math_fun_t is created and data is inserted into the table. Sample statements:
create table if not exists mf_math_fun_t(
int_data int,
bigint_data bigint,
double_data double,
decimal_data decimal,
float_data float,
string_data string
);
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');
Query data from the mf_math_fun_t table. Sample statement:
select * from mf_math_fun_t;
-- The following result is returned:
+------------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+------------+-------------+-------------+--------------+------------+-------------+
| NULL | -10 | 0.525 | 0.525 | 0.525 | 10 |
| -20 | NULL | -0.1 | -0.1 | -0.1 | -10 |
| 0 | -1 | NULL | 20.45 | -1.0 | 30 |
| -40 | 4 | 0.89 | NULL | 0.89 | -30 |
| 5 | -50 | -1.0 | -1 | NULL | 50 |
| -60 | 6 | 1.5 | 1.5 | 1.5 | -50 |
| -1 | -70 | -7.5 | -7.5 | -7.5 | NULL |
| -80 | 1 | -10.2 | -10.2 | -10.2 | -1 |
| 9 | -90 | 2.58 | 2.58 | 2.58 | 0 |
| -100 | 10 | -5.8 | -5.8 | -5.8 | -90 |
+------------+-------------+-------------+--------------+------------+-------------+
Example: static data
-- The return value is 4.0.
select log(2, 16);
-- The return value is null.
select log(2, null);
Example: table data
Calculate the logarithm of a column whose base number is 2 based on the Sample data. Sample statement:
select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;
The following result is returned:
+--------------------+----------------------+--------------------+--------------------+
| bigint_new | double_new | decimal_new | string_new |
+--------------------+----------------------+--------------------+--------------------+
| NULL | -0.929610672108602 | -0.929610672108602 | 3.3219280948873626 |
| NULL | NULL | NULL | NULL |
| NULL | NULL | 4.354028938054387 | 4.906890595608519 |
| 2.0 | -0.16812275880832692 | NULL | NULL |
| NULL | NULL | NULL | 5.643856189774724 |
| 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | NULL |
| NULL | NULL | NULL | NULL |
| 0.0 | NULL | NULL | NULL |
| NULL | 1.3673710656485296 | 1.3673710656485296 | NULL |
| 3.3219280948873626 | NULL | NULL | NULL |
+--------------------+----------------------+--------------------+--------------------+
Related functions
LOG is a mathematical function. For more information about functions related to data computing and conversion, see Mathematical functions.