No SQL Server, o T-SQL
LOG()
function é uma função matemática que retorna o logaritmo natural da expressão float especificada. Você especifica a expressão float como um argumento. Você também pode fornecer um segundo argumento (opcional) para definir a base do logaritmo.
Sintaxe
A sintaxe fica assim:
LOG ( float_expression [, base ] )
Onde float_expression é uma expressão do tipo float ou de um tipo que pode ser convertido implicitamente em float, e base é um argumento inteiro opcional que define a base para o logaritmo.
Exemplo 1 – Um argumento
Aqui está um exemplo básico para demonstrar como essa função funciona usando um argumento.
SELECT LOG(10) Result;
Resultado:
+------------------+ | Result | |------------------| | 2.30258509299405 | +------------------+
E aqui está outro exemplo usando um valor diferente.
SELECT LOG(0.5) Result;
Resultado:
+--------------------+ | Result | |--------------------| | -0.693147180559945 | +--------------------+
Exemplo 2 - Valor Negativo
Aqui está um exemplo de passagem de um valor negativo.
SELECT LOG(-10) Result;
Resultado:
Msg 3623, Level 16, State 1, Line 1 An invalid floating point operation occurred.
Este exemplo retorna um erro porque o logaritmo só pode ser retornado para números positivos que não sejam 1.
Exemplo 3 – Zero
Aqui está um exemplo de passagem de zero como argumento (obtemos o mesmo resultado do exemplo anterior).
SELECT LOG(0) Result;
Resultado:
Msg 3623, Level 16, State 1, Line 1 An invalid floating point operation occurred.
Exemplo 4 – Passando em 1
Se você passar um valor de 1, você termina com zero.
SELECT LOG(1) Result;
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
Exemplo 5 – Expressões
Você pode passar em expressões como esta:
SELECT LOG(2+3) Result;
Resultado:
+-----------------+ | Result | |-----------------| | 1.6094379124341 | +-----------------+
Isso é efetivamente o mesmo que fazer isso:
SELECT LOG(5) Result;
Resultado:
+-----------------+ | Result | |-----------------| | 1.6094379124341 | +-----------------+
Exemplo 6 – Dois argumentos
Aqui está um exemplo para demonstrar como essa função funciona usando dois argumentos.
SELECT LOG(10, 100) Result;
Resultado:
+----------+ | Result | |----------| | 0.5 | +----------+
E usando outro exemplo:
SELECT LOG(100, 10) Result;
Resultado:
+----------+ | Result | |----------| | 2 | +----------+
Se você estiver familiarizado com a versão MySQL de
LOG()
, você notará que a sintaxe de dois argumentos usa a ordem oposta à versão T-SQL (ou seja, a base vem primeiro). Exemplo 7 – Usando uma base de 1
Se você usar
1
como base, você receberá um erro. SELECT LOG(10, 1) Result;
Resultado:
Msg 3623, Level 16, State 1, Line 1 An invalid floating point operation occurred.
O mesmo se o primeiro argumento for igual a zero ou menos:
SELECT LOG(0, 10) Result;
Resultado:
Msg 3623, Level 16, State 1, Line 1 An invalid floating point operation occurred.
T-SQL também tem o
EXP()
função que é o inverso do LOG()
função. Você também pode usar o
LOG10()
função, que retorna o logaritmo de base 10 da expressão float especificada. Usar esta função é o mesmo que passar 10
como o segundo argumento para o LOG()
função.