Categorias:

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

CEIL

Retorna valores de input_expr arredondados para o inteiro igual ou maior mais próximo, ou para o valor igual ou maior mais próximo com o número especificado de casas após o ponto decimal.

Consulte também:

FLOOR , ROUND , TRUNCATE , TRUNC

Sintaxe

CEIL( <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 retorno é baseado no tipo de entrada:

  • Se a expressão de entrada for um FLOAT, o tipo retornado será um FLOAT.

  • Se a expressão de entrada for um NUMBER, o tipo retornado será um NUMBER.

    • Se a escala de entrada for constante:

      • Se a escala de entrada for positiva, o tipo retornado terá uma escala igual à escala de entrada e terá uma precisão grande o suficiente para abranger qualquer resultado possível.

      • Se a escala de entrada for negativa, o tipo retornado terá uma escala de 0.

    • Se a escala de entrada não for constante, a escala do tipo retornado será a mesma que a da expressão de entrada.

Se a escala for zero, então o valor é efetivamente um INTEGER.

Por exemplo:

  • O tipo de dados retornado por CEIL(3.14::FLOAT, 1) é FLOAT.

  • O NUMBER retornado por CEIL(3.14, 1) tem escala 1 e precisão de pelo menos 3.

  • O NUMBER retornado por CEIL(-9.99, 0) tem escala 0 e precisão de pelo menos 2.

  • O NUMBER retornado por CEIL(33.33, -1) tem escala 0 e precisão de pelo menos 3.

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.

  • Quando números negativos são arredondados para cima, o valor está mais próximo de 0. Por exemplo, CEIL(-1,9) é -1, e não -2.

  • Se o arredondamento do número para cima gerar o número fora do intervalo de valores do tipo de dados, então um erro será retornado.

Exemplos

Este exemplo demonstra a função sem o parâmetro scale_expr:

SELECT CEIL(135.135), CEIL(-975.975);
+---------------+----------------+
| CEIL(135.135) | CEIL(-975.975) |
|---------------+----------------|
|           136 |           -975 |
+---------------+----------------+
Copy

Este exemplo demonstra a função com o parâmetro scale_expr, inclusive com a escala ajustada para números negativos:

Criar e preencher uma tabela:

CREATE TRANSIENT TABLE test_ceiling (n FLOAT, scale INTEGER);
INSERT INTO test_ceiling (n, scale) VALUES
   (-975.975, -1),
   (-975.975,  0),
   (-975.975,  2),
   ( 135.135, -2),
   ( 135.135,  0),
   ( 135.135,  1),
   ( 135.135,  3),
   ( 135.135, 50),
   ( 135.135, NULL)
   ;
Copy

Saída:

SELECT n, scale, ceil(n, scale)
  FROM test_ceiling
  ORDER BY n, scale;
+----------+-------+----------------+
|        N | SCALE | CEIL(N, SCALE) |
|----------+-------+----------------|
| -975.975 |    -1 |       -970     |
| -975.975 |     0 |       -975     |
| -975.975 |     2 |       -975.97  |
|  135.135 |    -2 |        200     |
|  135.135 |     0 |        136     |
|  135.135 |     1 |        135.2   |
|  135.135 |     3 |        135.135 |
|  135.135 |    50 |        135.135 |
|  135.135 |  NULL |           NULL |
+----------+-------+----------------+
Copy