O AnalyticDB for MySQL oferece suporte às seguintes funções numéricas para operações aritméticas, de arredondamento, trigonométricas, logarítmicas e outras operações matemáticas em dados numéricos.
Índice de funções
|
Categoria |
Função |
Descrição |
|
Aritmética |
Retorna o valor absoluto |
|
|
Retorna o sinal de um número |
||
|
Retorna a raiz quadrada |
||
|
Retorna e elevado à potência de x |
||
|
Retorna x elevado à potência de y |
||
|
Retorna o valor da verificação de redundância cíclica (CRC) |
||
|
Arredondamento |
Arredonda para cima até o inteiro mais próximo |
|
|
Arredonda para baixo até o inteiro mais próximo |
||
|
Arredonda para um número especificado de casas decimais |
||
|
Trigonométrica |
Retorna o seno |
|
|
Retorna o cosseno |
||
|
Retorna a tangente |
||
|
Retorna a cotangente |
||
|
Retorna o arco seno |
||
|
Retorna o arco cosseno |
||
|
Retorna o arco tangente |
||
|
Retorna o arco tangente de x/y |
||
|
Converte radianos em graus |
||
|
Converte graus em radianos |
||
|
Retorna o valor de pi |
||
|
Logarítmica |
Retorna o logaritmo natural |
|
|
Retorna o logaritmo natural ou o logaritmo em uma base especificada |
||
|
Retorna o logaritmo na base 2 |
||
|
Retorna o logaritmo na base 10 |
||
|
Aleatória |
Retorna um número de ponto flutuante aleatório |
ABS
abs(expr)
Retorna o valor absoluto de expr.
Argumentos
expr: Expressão numérica. Tipos aceitos: TINYINT, SMALLINT, INT, BIGINT, DOUBLE, FLOAT ou DECIMAL.
Tipo de retorno
|
Tipo de entrada |
Tipo de retorno |
|
TINYINT, SMALLINT, INT, BIGINT |
BIGINT |
|
DOUBLE, FLOAT |
DOUBLE |
|
DECIMAL |
DECIMAL |
Exemplos
SELECT abs(4.5);
+----------+
| abs(4.5) |
+----------+
| 4.5 |
+----------+
SELECT abs(-4);
+--------+
| abs(4) |
+--------+
| 4 |
+--------+
ACOS
acos(expr)
Retorna o arco cosseno de expr, em radianos.
Argumentos
expr: Valor DOUBLE. Deve estar no intervalo [-1, 1].
Tipo de retorno: DOUBLE.
Notas de uso
Se
exprfor maior que 1 ou menor que -1, a função retornará NULL.
Exemplo
SELECT acos(0.5);
+--------------------+
| acos(0.5) |
+--------------------+
| 1.0471975511965979 |
+--------------------+
ASIN
asin(expr)
Retorna o arco seno de expr, em radianos.
Argumentos
expr: Valor DOUBLE. Deve estar no intervalo [-1, 1].
Tipo de retorno: DOUBLE.
Notas de uso
Se
exprfor maior que 1 ou menor que -1, a função retornará NULL.
Exemplo
SELECT asin(0.5);
+--------------------+
| asin(0.5) |
+--------------------+
| 0.5235987755982989 |
+--------------------+
ATAN
atan(expr)
Retorna o arco tangente de expr, em radianos.
Argumentos
expr: Valor DOUBLE.
Tipo de retorno: DOUBLE.
Exemplo
SELECT atan(0.5);
+--------------------+
| atan(0.5) |
+--------------------+
| 0.4636476090008061 |
+--------------------+
ATAN2
atan2(x, y)
Retorna o arco tangente de x dividido por y, em radianos.
Argumentos
x: Valor DOUBLE (numerador).y: Valor DOUBLE (denominador).
Tipo de retorno: DOUBLE.
Exemplo
SELECT atan2(0.5, 0.3);
+--------------------+
| atan2(0.5,0.3) |
+--------------------+
| 1.0303768265243125 |
+--------------------+
CEILING ou CEIL
ceiling(expr)
ceil(expr)
Retorna expr arredondado para cima até o inteiro mais próximo.
Argumentos
expr: Expressão numérica. Tipos aceitos: TINYINT, SMALLINT, INT, BIGINT, DOUBLE, FLOAT ou DECIMAL.
Tipo de retorno
|
Tipo de entrada |
Tipo de retorno |
|
TINYINT, SMALLINT, INT, BIGINT |
BIGINT |
|
DOUBLE, FLOAT |
DOUBLE |
|
DECIMAL |
DECIMAL |
Exemplos
SELECT ceiling(4);
+------------+
| ceiling(4) |
+------------+
| 4 |
+------------+
SELECT ceil(-4.5);
+------------+
| ceil(-4.5) |
+------------+
| -4 |
+------------+
COS
cos(expr)
Retorna o cosseno de expr, onde expr está em radianos.
Argumentos
expr: Valor DOUBLE (ângulo em radianos).
Tipo de retorno: DOUBLE.
Exemplo
SELECT cos(1.3);
+---------------------+
| cos(1.3) |
+---------------------+
| 0.26749882862458735 |
+---------------------+
COT
cot(expr)
Retorna a cotangente de expr, onde expr está em radianos.
Argumentos
expr: Valor DOUBLE (ângulo em radianos).
Tipo de retorno: DOUBLE.
Exemplo
SELECT cot(1.234);
+---------------------+
| cot(1.234) |
+---------------------+
| 0.35013639786701445 |
+---------------------+
CRC32
crc32(expr)
Retorna o valor da verificação de redundância cíclica (CRC) de expr.
Argumentos
expr: Valor VARBINARY.
Tipo de retorno: BIGINT.
Exemplo
SELECT crc32('China');
+-----------------+
| crc32('China') |
+-----------------+
| 737014929 |
+-----------------+
DEGREES
degrees(expr)
Converte expr de radianos para graus.
Argumentos
expr: Valor DOUBLE (ângulo em radianos).
Tipo de retorno: DOUBLE.
Exemplo
SELECT degrees(1.3);
+-------------------+
| degrees(1.3) |
+-------------------+
| 74.48451336700703 |
+-------------------+
EXP
exp(expr)
Retorna e (base do logaritmo natural) elevado à potência de expr.
Argumentos
expr: Valor DOUBLE (expoente).
Tipo de retorno: DOUBLE.
Exemplo
SELECT exp(4.5);
+-------------------+
| exp(4.5) |
+-------------------+
| 90.01713130052181 |
+-------------------+
FLOOR
floor(expr)
Retorna expr arredondado para baixo até o inteiro mais próximo.
Argumentos
expr: Expressão numérica. Tipos aceitos: TINYINT, SMALLINT, INT, BIGINT, DOUBLE, FLOAT ou DECIMAL.
Tipo de retorno
|
Tipo de entrada |
Tipo de retorno |
|
TINYINT, SMALLINT, INT, BIGINT |
BIGINT |
|
DOUBLE, FLOAT |
DOUBLE |
|
DECIMAL |
DECIMAL |
Notas de uso
O AnalyticDB for MySQL converte literais numéricos como
0.8para DECIMAL. O tipo de retorno segue o tipo de entrada:floor(0.8)retorna um DECIMAL0, não um inteiro0.Expressões de divisão como
4/5são avaliadas como DOUBLE; portanto,floor(4/5)retorna0.0(DOUBLE). Para obter um resultado inteiro, envolva a saída em uma função CAST.
Exemplos
SELECT floor(7);
+----------+
| floor(7) |
+----------+
| 7 |
+----------+
floor(0.8): a entrada 0.8 é tratada como DECIMAL, então o tipo de retorno é DECIMAL:
SELECT floor(0.8);
+-------------+
| floor(0.8) |
+-------------+
| 0 |
+-------------+
floor(4/5): a expressão 4/5 é avaliada como DOUBLE, então o tipo de retorno é DOUBLE:
SELECT floor(4/5);
+-------------+
| floor(4/5) |
+-------------+
| 0.0 |
+-------------+
LN
ln(expr)
Retorna o logaritmo natural de expr.
Argumentos
expr: Valor DOUBLE.
Tipo de retorno: DOUBLE.
Exemplo
SELECT ln(2.718281828459045);
+-----------------------+
| ln(2.718281828459045) |
+-----------------------+
| 1.0 |
+-----------------------+
LOG
log(expr)
log(base, expr)
Retorna o logaritmo de expr. Com um argumento, retorna o logaritmo natural. Com dois argumentos, retorna o logaritmo de expr na base especificada.
Argumentos
expr: Valor DOUBLE (expressão de entrada).base(opcional): Valor DOUBLE (base do logaritmo).
Tipo de retorno: DOUBLE.
Exemplos
Logaritmo natural de 16:
SELECT log(16);
+-------------------+
| log(16) |
+-------------------+
| 2.772588722239781 |
+-------------------+
Logaritmo de 100 na base 10:
SELECT log(10, 100);
+-------------+
| log(10,100) |
+-------------+
| 2.0 |
+-------------+
LOG2
log2(expr)
Retorna o logaritmo na base 2 de expr.
Argumentos
expr: Valor DOUBLE.
Tipo de retorno: DOUBLE.
Exemplo
SELECT log2(8.7654);
+-------------------+
| log2(8.7654) |
+-------------------+
| 3.131819928389146 |
+-------------------+
LOG10
log10(expr)
Retorna o logaritmo na base 10 de expr.
Argumentos
expr: Valor DOUBLE.
Tipo de retorno: DOUBLE.
Exemplo
SELECT log10(100.876);
+--------------------+
| log10(100.876) |
+--------------------+
| 2.0037878529824615 |
+--------------------+
PI
pi()
Retorna o valor de pi (razão entre a circunferência de um círculo e seu diâmetro).
Tipo de retorno: DOUBLE.
Exemplo
SELECT pi();
+-------------------+
| pi() |
+-------------------+
| 3.141592653589793 |
+-------------------+
POWER ou POW
power(x, y)
pow(x, y)
Retorna x elevado à potência de y.
Argumentos
x: Valor DOUBLE (base).y: Valor DOUBLE (expoente).
Tipo de retorno: DOUBLE.
Exemplos
SELECT power(1.2, 3.4);
+-------------------+
| power(1.2,3.4) |
+-------------------+
| 1.858729691979481 |
+-------------------+
SELECT pow(-2, -3);
+------------+
| pow(-2,-3) |
+------------+
| -0.125 |
+------------+
RADIANS
radians(expr)
Converte expr de graus para radianos.
Argumentos
expr: Valor DOUBLE (ângulo em graus).
Tipo de retorno: DOUBLE.
Exemplo
SELECT radians(60.0);
+--------------------+
| radians(60.0) |
+--------------------+
| 1.0471975511965976 |
+--------------------+
RAND
rand()
rand() * (y - x) + x
Retorna um número de ponto flutuante aleatório. rand() retorna um valor no intervalo [0, 1). Para obter um número aleatório em um intervalo personalizado [x, y), use rand() * (y - x) + x.
Tipo de retorno: DOUBLE.
Notas de uso
rand()não aceita argumentos.O resultado tem distribuição uniforme: maior ou igual a
xe menor quey.
Exemplos
Número aleatório no intervalo [0, 1):
SELECT rand();
+--------------------+
| rand() |
+--------------------+
| 0.6613712594764614 |
+--------------------+
Número aleatório no intervalo [3, 12):
SELECT rand() * (12 - 3) + 3;
+-------------------+
| rand()*(12-3)+3 |
+-------------------+
| 9.073329270781976 |
+-------------------+
ROUND
round(expr [, scale])
Retorna expr arredondado para scale casas decimais. O valor padrão de scale é 0. O tipo de retorno corresponde ao tipo de entrada.
Argumentos
expr: Expressão numérica a ser arredondada. Tipos aceitos: TINYINT, SMALLINT, INT, BIGINT, DOUBLE, FLOAT ou DECIMAL.scale(opcional): Inteiro que especifica o número de casas decimais. O padrão é 0.
Tipo de retorno
|
Tipo de entrada |
Tipo de retorno |
|
TINYINT, SMALLINT, INT, BIGINT |
BIGINT |
|
DOUBLE, FLOAT |
DOUBLE |
|
DECIMAL |
DECIMAL |
Notas de uso
Se
exprfor NULL, a função retornará NULL.Quando
scalefor maior que 0, o resultado será arredondado para esse número de casas decimais.Caso
scaleseja igual a 0, o resultado será arredondado para o inteiro mais próximo.Se
scalefor menor que 0, o resultado será arredondado para esse número de casas à esquerda do ponto decimal. Por exemplo,scale = -1arredonda para a dezena mais próxima.
Exemplos
Arredondar para o inteiro mais próximo (scale = 0):
SELECT round(345.983, 0);
+------------------+
| round(345.983,0) |
+------------------+
| 346.000 |
+------------------+
Arredondar para uma casa decimal (scale = 1):
SELECT round(345.123, 1);
+------------------+
| round(345.123,1) |
+------------------+
| 345.100 |
+------------------+
Arredondar para uma casa à esquerda do ponto decimal (scale = -1):
SELECT round(344.984, -1);
+-------------------+
| round(344.984,-1) |
+-------------------+
| 340.000 |
+-------------------+
Arredondar para quatro casas à esquerda do ponto decimal (scale = -4):
SELECT round(345.984, -4);
+-------------------+
| round(345.984,-4) |
+-------------------+
| 0.000 |
+-------------------+
SIGN
sign(expr)
Retorna o sinal de expr como um inteiro: 1 para positivo, 0 para zero e -1 para negativo.
Argumentos
expr: Expressão numérica. Tipos aceitos: TINYINT, SMALLINT, INT, BIGINT, DOUBLE, FLOAT ou DECIMAL.
Tipo de retorno: BIGINT.
Exemplos
SELECT sign(12);
+----------+
| sign(12) |
+----------+
| 1 |
+----------+
SELECT sign(-4.5);
+------------+
| sign(-4.5) |
+------------+
| -1 |
+------------+
SIN
sin(expr)
Retorna o seno de expr, onde expr está em radianos.
Argumentos
expr: Valor DOUBLE (ângulo em radianos).
Tipo de retorno: DOUBLE.
Exemplo
SELECT sin(1.234);
+--------------------+
| sin(1.234) |
+--------------------+
| 0.9438182093746337 |
+--------------------+
SQRT
sqrt(expr)
Retorna a raiz quadrada de expr.
Argumentos
expr: Valor DOUBLE.
Tipo de retorno: DOUBLE.
Exemplo
SELECT sqrt(4.222);
+-------------------+
| sqrt(4.222) |
+-------------------+
| 2.054750593137766 |
+-------------------+
TAN
tan(expr)
Retorna a tangente de expr, onde expr está em radianos.
Argumentos
expr: Valor DOUBLE (ângulo em radianos).
Tipo de retorno: DOUBLE.
Exemplo
SELECT tan(8);
+--------------------+
| tan(8) |
+--------------------+
| -6.799711455220379 |
+--------------------+