Coerções Suportadas

Este tópico lista os CASTs suportados entre as combinações de tipos de dados.

Um CAST não é suportado entre cada combinação de tipos de dados. Os que são suportados estão relacionados abaixo, junto com o efeito do CAST.

Tipo de dados de origem Tipo de dados de destino Efeito
BIT BIT O resultado é igual à entrada.
BIT BLOB A matriz de bits é convertida em uma matriz de bytes com um máximo de 263 elementos. Um erro é relatado se a origem não tiver um comprimento adequado para produzir um BLOB (ou seja, um múltiplo de 8).
BIT CHARACTER O resultado é uma cadeia que se adequa à definição de um literal de cadeia de bits cujo valor interpretado é o mesmo que o valor de origem. A cadeia resultante possui o formato B'bbbbbb' (em que b é 0 ou 1).

Se uma cláusula CCSID ou ENCODING for especificada, a matriz de bits dada é considerada como sendo caracteres no CCSID e codificação especificados e é a página de códigos convertida no valor de retorno de caractere.

Se apenas um CCSID for especificado, a codificação big endian é assumida.

Se somente uma codificação for especificada, um CCSID de 1208 é considerado.

Essa função poderá relatar erros de conversão se a página de códigos ou a codificação forem desconhecidas, os dados fornecidos não forem um número integral de caracteres da página de códigos ou os dados contiverem caracteres que não sejam válidos na página de códigos determinada.

BIT INTEGER A matriz de bits tem um máximo de 263 elementos e é convertida em um inteiro.Um erro é relatado se a origem não tiver o comprimento adequado para produzir um inteiro.
BLOB BIT A matriz de bytes dada é convertida em uma matriz de bits com um máximo de 263 elementos.
BLOB BLOB O resultado é igual à entrada.
BLOB CHARACTER O resultado é uma cadeia que se adequa à definição de um literal de cadeia binária cujo valor interpretado é o mesmo que o valor de origem. A cadeia resultante possui o formato X'hhhh' (em que h é qualquer caractere hexadecimal).

Se uma cláusula CCSID ou ENCODING for especificada, a matriz de bytes é considerada como sendo caracteres no CCSID e codificação especificados e é a página de códigos convertida no valor de retorno de caractere.

Se apenas um CCSID for especificado, a codificação big endian é assumida.

Se somente uma codificação for especificada, um CCSID de 1208 é considerado.

Essa função poderá relatar erros de conversão se a página de códigos ou a codificação forem desconhecidas, os dados fornecidos não forem um número integral de caracteres da página de códigos ou os dados contiverem caracteres que não sejam válidos na página de códigos determinada.

BLOB INTEGER A matriz de bytes tem um máximo de 263 elementos e é convertida em um inteiro.Um erro é relatado se a origem não tiver o comprimento correto para corresponder a um inteiro.
BOOLEAN BOOLEAN O resultado é igual à entrada.
BOOLEAN CHARACTER Se o valor de origem for TRUE, o resultado será a cadeia de caracteres TRUE. Se o valor de origem for FALSE, o resultado será a cadeia de caracteres FALSE. Pelo fato de o valor booleano UNKNOWN ser o mesmo que o valor NULL para booleanos, o resultado é o valor da cadeia de caracteres NULL se o valor de origem for UNKNOWN.
CHARACTER BIT A cadeia de caracteres deve adequar-se às regras para um literal de cadeia de bits ou ao conteúdo do literal de cadeia de bits. Ou seja, a cadeia de caracteres deve ser do formato B'bbbbbbb ou bbbbbb (em que b' pode ser 0 ou 1).

Se uma cláusula CCSID ou ENCODING for especificada, a cadeia de caracteres é convertida no CCSID e na codificação especificados e colocada sem outra conversão no valor de retorno da matriz de bits.

Se apenas um CCSID for especificado, a codificação big endian é assumida.

Se somente uma codificação for especificada, um CCSID de 1208 é considerado.

Essa função poderá relatar erros de conversão se a página de códigos ou a codificação forem desconhecidas ou os dados fornecidos contiverem caracteres Unicode que não podem ser convertidos na página de códigos determinada.

CHARACTER BLOB A cadeia de caracteres deve adequar-se às regras para um literal de cadeia binária ou ao conteúdo do literal de cadeia binária. Ou seja, a cadeia de caracteres pode ser da forma X'hhhhhh' ou hhhhhh (em que h pode ser qualquer caractere hexadecimal).

Se uma cláusula CCSID ou ENCODING for especificada, a cadeia de caracteres é convertida no CCSID e na codificação especificados e colocada sem outra conversão no valor de retorno da matriz de bytes.

Se apenas um CCSID for especificado, a codificação big endian é assumida.

Se somente uma codificação for especificada, um CCSID de 1208 é considerado.

Essa função poderá relatar erros de conversão se a página de códigos ou a codificação forem desconhecidas ou os dados fornecidos contiverem caracteres Unicode que não podem ser convertidos na página de códigos determinada.

CHARACTER BOOLEAN A cadeia de caracteres é interpretada da mesma maneira que um literal booleano. Ou seja, a cadeia de caracteres deve ser uma das cadeias TRUE, FALSE ou UNKNOWN (em qualquer combinação de casos).
CHARACTER CHARACTER O resultado é igual à entrada.
CHARACTER DATE A cadeia de caracteres deve adequar-se às regras para um literal de data ou a cadeia de data. Ou seja, a cadeia de caracteres pode ser DATE '2002-10-05' ou 2002-10-05.
CHARACTER DECIMAL A cadeia de caracteres é interpretada da mesma maneira que um literal numérico exato para formar um resultado decimal temporário com uma escala e precisão definidas pelo formato da cadeia. Isso é convertido em um decimal de precisão e escala especificadas, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes.

Se a precisão e a escala não estiverem especificadas, a precisão e a escala do resultado são o mínimo necessário para conter o valor dado.

CHARACTER FLOAT A cadeia de caracteres é interpretada da mesma maneira que o literal ponto flutuante.
CHARACTER GMTTIME A cadeia de caracteres deve adequar-se às regras para um literal de hora GMT ou a cadeia de hora. Ou seja, a cadeia de caracteres pode ser GMTTIME '09:24:15' ou 09:24:15.
CHARACTER GMTTIMESTAMP A cadeia de caracteres deve adequar-se às regras para um literal de data e hora GMT ou a cadeia de data e hora. Ou seja, a cadeia de caracteres pode ser GMTTIMESTAMP '2002-10-05 09:24:15' ou 2002-10-05 09:24:15.
CHARACTER INTEGER A cadeia de caracteres é interpretada da mesma maneira que um literal inteiro.
CHARACTER INTERVAL A cadeia de caracteres deve adequar-se às regras para um literal de intervalo com o mesmo qualificador de intervalo especificado na especificação CAST ou deve adequar-se às regras para uma cadeia de intervalo que aplicam-se ao qualificador de intervalo especificado.
CHARACTER HORA A cadeia de caracteres deve adequar-se às regras para um literal de hora ou para a cadeia de hora. Ou seja, a cadeia de caracteres pode ser TIME '09:24:15' ou 09:24:15.
CHARACTER TIMESTAMP A cadeia de caracteres deve adequar-se às regras para um literal de data e hora ou para a cadeia de data e hora. Ou seja, a cadeia de caracteres pode ser TIMESTAMP '2002-10-05 09:24:15' ou 2002-10-05 09:24:15.
DATE CHARACTER O resultado é uma cadeia que se adequa à definição de um literal de data, cujo valor interpretado é o mesmo que o valor da data de origem.
Por exemplo:
CAST(DATE '2002-10-05' AS CHAR)
retorna
DATE '2002-10-05'
DATE DATE O resultado é igual à entrada.
DECIMAL CHARACTER O resultado é a cadeia de caracteres mais curta que se adequa à definição de um literal numérico exato e cujo valor interpretado é o valor da decimal.
DECIMAL DECIMAL

O valor é convertido à precisão e escala especificadas, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes. Se a precisão e a escala não forem especificadas, o valor, a precisão e a escala são preservados; ou seja, é um NOOP (sem operação).

DECIMAL FLOAT O número é convertido, sem arredondamento se necessário.
DECIMAL INTEGER

O valor é arredondado e convertido em um inteiro, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes.

DECIMAL INTERVAL Se o qualificador de intervalo especificado tiver somente um campo, o resultado é um intervalo com esse qualificador com o campo igual ao valor do numérico exato. Caso contrário, um erro em tempo de execução é gerado.
FLOAT CHARACTER O resultado é a cadeia de caracteres mais curta que se adequa à definição de um literal numérico aproximado e cuja mantissa consiste em um dígito único que não é 0, seguido por um ponto e um inteiro não assinado, cujo valor interpretado é o valor da flutuação.
FLOAT FLOAT O resultado é igual à entrada.
FLOAT DECIMAL

O valor é arredondado e convertido em um decimal de precisão e escala especificadas, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes. Se a precisão e a escala não estiverem especificadas, a precisão e a escala do resultado são o mínimo necessário para conter o valor dado.

FLOAT INTEGER

O valor é arredondado e convertido em um inteiro, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes.

GMTTIME CHARACTER O resultado é uma cadeia que se adequa à definição de um literal GMTTIME cujo valor interpretado é o mesmo que o valor de origem. A cadeia resultante possui o formato GMTTIME 'hh:mm:ss'.
GMTTIME

GMTTIME

O resultado é igual à entrada.
GMTTIME HORA O valor resultante é o valor de origem mais o deslocamento do fuso horário local (como retornado por LOCAL_TIMEZONE). O campo de horas é modulo 24 calculado.
GMTTIMESTAMP CHARACTER O resultado é uma cadeia que se adequa à definição de um literal GMTTIMESTAMP cujo valor interpretado é o mesmo que o valor de origem. A cadeia resultante possui o formato GMTTIMESTAMP 'yyyy-mm-dd hh:mm:ss'.
GMTTIMESTAMP GMTTIMESTAMP O resultado é igual à entrada.
GMTTIMESTAMP TIMESTAMP O valor resultante é o valor de origem mais o deslocamento do fuso horário local (como retornado por LOCAL_TIMEZONE).
INTEGER BIT O inteiro dado é convertido em uma matriz de bits com um máximo de 263 elementos.
INTEGER BLOB O inteiro dado é convertido em uma matriz de bytes com um máximo de 263 elementos.
INTEGER CHARACTER O resultado é a cadeia de caracteres mais curta que se adequa à definição de um literal numérico exato e cujo valor interpretado é o valor do inteiro.
INTEGER FLOAT O número é convertido, sem arredondamento se necessário.
INTEGER INTEGER O resultado é igual à entrada.
INTEGER DECIMAL

O valor é convertido em um decimal de precisão e escala especificadas, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes. Se a precisão e a escala não estiverem especificadas, a precisão e a escala do resultado são o mínimo necessário para conter o valor dado.

INTEGER INTERVAL Se o qualificador de intervalo especificado tiver somente um campo, o resultado é um intervalo com esse qualificador com o campo igual ao valor do numérico exato. Caso contrário, um erro em tempo de execução é gerado.
INTERVAL CHARACTER TO resultado é uma cadeia que se adequa à definição de um literal INTERVAL literal, cujo valor interpretado é o mesmo que o valor do intervalo de origem.
Por exemplo:
CAST(INTERVAL '4' YEARS AS CHAR)
retorna
INTERVAL '4' YEARS
INTERVAL DECIMAL

Se o valor de intervalo tiver um qualificador que tenha somente um campo, o resultado é um decimal de precisão e escala especificadas com esse valor, com um erro em tempo de execução sendo gerado se a conversão resultar na perda de dígitos significantes. Se o intervalado tiver um qualificador com mais de um campo, como YEAR TO MONTH, um erro em tempo de execução é gerado. Se a precisão e a escala não estiverem especificadas, a precisão e a escala do resultado são o mínimo necessário para conter o valor dado.

INTERVAL INTEGER

Se o valor de intervalo tiver um qualificador que tenha somente um campo, o resultado é um inteiro com esse valor. Se o intervalado tiver um qualificador com mais de um campo, como YEAR TO MONTH, um erro em tempo de execução é gerado.

INTERVAL INTERVAL O resultado é igual à entrada.

Os intervalos de ano-mês podem ser convertidos somente em intervalos de ano-mês e intervalos de dia-segundo somente em intervalos de dia-segundo. O intervalo de origem é convertido em um escalar em unidades do campo menos significantes do qualificador de intervalo de destino. Esse valor é normalizado em um intervalo com o qualificador de intervalo de destino. Por exemplo, para converter um intervalo que tenha o qualificador MINUTE TO SECOND em um intervalo com o qualificador DAY TO HOUR, o valor de origem é convertido em um escalar em unidades de horas e esse valor é normalizado em um intervalo com o qualificador DAY TO HOUR.

HORA CHARACTER O resultado é uma cadeia que se adequa à definição de um literal TIME, cujo valor interpretado é o mesmo que o valor da hora de origem.
Por exemplo:
CAST(TIME '09:24:15' AS CHAR)
retorna
TIME
'09:24:15'
HORA GMTTIME O valor do resultado é o valor de origem menos o deslocamento do fuso horário local (como retornado por LOCAL_TIMEZONE). O campo de horas é modulo 24 calculado.
TIME TIME O resultado é igual à entrada.
HORA TIMESTAMP O resultado é um valor cujos campos de data são tirados da data atual e cujos campos de hora são tirados do valor de hora de origem.
TIMESTAMP CHARACTER O resultado é uma cadeia que se adequa à definição de um literal TIMESTAMP, cujo valor interpretado é o mesmo que o valor de data e hora de origem.
Por exemplo:
CAST(TIMESTAMP
'2002-10-05 09:24:15' AS CHAR)
retorna
TIMESTAMP '2002-10-05 09:24:15'
TIMESTAMP DATE O resultado é um valor cujos campos consistem nos campos de data do valor de data e hora de origem.
TIMESTAMP GMTTIMESTAMP O valor resultante é o valor de origem menos o deslocamento do fuso horário local (como retornado por LOCAL_TIMEZONE).
TIMESTAMP HORA O resultado é um valor cujos campos consistem nos campos de hora do valor de data e hora de origem.
TIMESTAMP TIMESTAMP O resultado é igual à entrada.

Consulte Tipos de Dados ESQL para obter informações sobre precisão, escala e qualificador de intervalo.

Conceitos relacionados
ESQL
Tipos de Dados ESQL

Tarefas relacionadas
Desenvolvendo ESQL

Referências relacionadas
Funções Complexas ESQL
Função CAST
Especificação CAST
Casts Implícitos
Tipos de Dados de Valores de Origens Externas