CASTs implícitos para operações aritméticas

Este tópico lista os CASTs implícitos, disponíveis para operações aritméticas.

Normalmente, os operadores aritméticos (+, -, * e /) operam em operandos do mesmo tipo de dados e retornam um valor do mesmo tipo de dados que os operandos. Os casos em que os operandos podem ter tipos de dados diferentes, ou em que o tipo de dados do valor resultante é diferente do tipo dos operandos, são mostrados na tabela a seguir.

A tabela a seguir lista os CASTs implícitos para operações aritmética.
Tipo de dados do operando esquerdo Tipo de dados do operando direito Operadores suportados Tipo de dados de resultado
INTEGER FLOAT +, -, *, / FLOAT1
INTEGER DECIMAL +, -, *, / DECIMAL1
INTEGER INTERVAL * INTERVAL4
FLOAT INTEGER +, -, *, / FLOAT1
FLOAT DECIMAL +, -, *, / FLOAT1
FLOAT INTERVAL * INTERVAL4
DECIMAL INTEGER +, -, *, / DECIMAL1
DECIMAL FLOAT +, -, *, / FLOAT1
DECIMAL INTERVAL * INTERVAL4
HORA HORA - INTERVAL2
HORA GMTTIME - INTERVAL2
HORA INTERVAL +, - TIME3
GMTTIME HORA - INTERVAL2
GMTTIME GMTTIME - INTERVAL2
GMTTIME INTERVAL +, - GMTTIME3
DATE DATE - INTERVAL2
DATE INTERVAL +, - DATE3
TIMESTAMP TIMESTAMP - INTERVAL2
TIMESTAMP GMTTIMESTAMP - INTERVAL2
TIMESTAMP INTERVAL +, - TIMESTAMP3
GMTTIMESTAMP TIMESTAMP - INTERVAL2
GMTTIMESTAMP GMTTIMESTAMP - INTERVAL2
GMTTIMESTAMP INTERVAL +, - GMTTIMESTAMP3
INTERVAL INTEGER *, / INTERVAL4
INTERVAL FLOAT *, / INTERVAL4
INTERVAL DECIMAL *, / INTERVAL4
INTERVAL HORA + TIME3
INTERVAL GMTTIME + GMTTIME3
INTERVAL DATE + DATE3
INTERVAL TIMESTAMP + TIMESTAMP3
INTERVAL GMTTIMESTAMP + GMTTIMESTAMP3
Notes:
  1. O operando que não corresponde ao tipo de dados do resultado é lançado no tipo de dados do resultado antes da continuação da operação. Por exemplo, se o operando esquerdo para um operador de adição for INTEGER, e o operando direito for FLOAT, o operando esquerdo será lançado para um FLOAT antes da execução da operação de adição.
  2. Subtrair um valor (GMT)TIME de um valor (GMT)TIME, um valor DATE de um valor DATE ou um valor (GMT)TIMESTAMP de um valor (GMT)TIMESTAMP resulta em um valor INTERVAL, que representa o intervalo de tempo entre os dois operandos.
  3. Incluir ou subtrair um INTERVAL de um valor (GMT)TIME, DATE ou (GMT)TIMESTAMP resulta em um novo valor do tipo de dados do operando não-INTERVAL, que representa o ponto no tempo representado pelo não-INTERVAL original mais ou menos o período de tempo representado por INTERVAL.
  4. Multiplicar ou dividir um INTERVAL por um valor INTEGER, FLOAT ou DECIMAL resulta em um novo INTERVAL, que representa o período de tempo representado pelo original multiplicado ou dividido pelo fator representado pelo operando não-INTERVAL. Por exemplo, um valor INTERVAL de 2 horas e 16 minutos, multiplicado por um valor FLOAT de 2,5, resulta em um novo valor INTERVAL de 5 horas e 40 minutos. Os cálculos intermediários envolvidos na multiplicação ou divisão do INTERVAL original são feitos no tipo de dados de não-INTERVAL, mas os campos individuais de INTERVAL (como HOUR, YEAR, etc.) são sempre integrais, então alguns erros de arredondamento podem ocorrer.
Conceitos relacionados
Visão Geral do ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Referências relacionadas
Funções Complexas ESQL
Casts Implícitos
CASTs Implícitos para Comparações
CASTs Implícitos para Designação
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05710_