Categorias:

Funções numéricas (Arredondamento e truncamento)

TRUNCATE , TRUNC

Arredonda a expressão de entrada para o inteiro mais próximo (ou igual) mais próximo de zero, ou para o valor igual ou menor mais próximo com o número especificado de casas após o ponto decimal.

Estas funções são sinônimas.

Nota

TRUNC é sobrecarregado; também pode ser usado como função de data/hora para truncar datas, horas e carimbos de data/hora para uma parte específica.

Consulte também:

CEIL , FLOOR , ROUND

Sintaxe

TRUNCATE( <input_expr> [ , <scale_expr> ] )

TRUNC( <input_expr> [ , <scale_expr> ] )
Copy

Argumentos

input_expr

O valor ou expressão a ser utilizado. O tipo de dados deve ser um dos tipos de dados numéricos, como FLOAT ou NUMBER.

scale_expr

O número de dígitos que a saída deve incluir após o ponto decimal. A expressão deve ser avaliada como um número inteiro de -38 a +38.

O padrão scale_expr é zero, o que significa que a função remove todos os dígitos após o ponto decimal.

Para obter mais informações sobre escalas negativas, consulte as Notas de uso abaixo.

Retornos

O tipo de dados do valor retornado é NUMBER(precisão, escala).

Se a escala de entrada foi maior ou igual a zero, então a escala de saída geralmente corresponderá à escala de entrada.

Se a escala de entrada foi negativa, então a escala de saída será 0.

Por exemplo:
  • O tipo de dados devolvidos por TRUNCATE(3,14, 1) é NUMBER(4, 1).

  • O tipo de dados devolvidos por TRUNCATE(3,14, 0) é NUMBER(4, 0).

  • O tipo de dados devolvidos por TRUNCATE(33,33, -1) é NUMBER(5, 0).

Se a escala for zero, então o valor é efetivamente um número inteiro.

Notas de uso

  • Se scale_expr for negativo, então ele especificará o número de casas antes do ponto decimal para ajustar o número. Por exemplo, se a escala for -2, então o resultado será um múltiplo de 100.

  • Se scale_expr for maior do que a escala de expressão de entrada, a função não tem qualquer efeito.

  • Se o input_expr ou o scale_expr for NULL, então o resultado será NULL.

  • O truncamento é feito para 0, não para o número menor. Por exemplo, TRUNCATE(-9,6) resulta em -9, não em -10.

Exemplos

Os exemplos a seguir demonstram a função TRUNC.

SELECT DISTINCT n, TRUNCATE(n) 
  FROM test_1
  ORDER BY n;
+----------+-------------+
|        N | TRUNCATE(N) |
|----------+-------------|
| -975.975 |        -975 |
|  135.135 |         135 |
+----------+-------------+
Copy
SELECT n, scale, TRUNC(n, scale) 
  FROM test_1 
  ORDER BY n, scale;
+----------+-------+-----------------+
|        N | SCALE | TRUNC(N, SCALE) |
|----------+-------+-----------------|
| -975.975 |    -1 |        -970     |
| -975.975 |     0 |        -975     |
| -975.975 |     2 |        -975.97  |
|  135.135 |    -2 |         100     |
|  135.135 |     0 |         135     |
|  135.135 |     1 |         135.1   |
|  135.135 |     3 |         135.135 |
|  135.135 |    50 |         135.135 |
|  135.135 |  NULL |            NULL |
+----------+-------+-----------------+
Copy