Coerções Suportadas

Este tópico lista os CASTs que são 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.

Na coerção, pode haver um mapeamento um para um ou muitos para um entre o tipo de dados de origem e o tipo de dados de destino. Um exemplo de mapeamento um para um é quando o tipo de dados de origem é um inteiro único e o tipo de dados de destino é um flutuante único. Um exemplo de mapeamento muitos para um é quando os dados de origem consistem em três inteiros que são convertidos em uma data única. A Tabela 1 lista as coerções um para um suportadas. A Tabela 2 lista as coerções muitos para um suportadas.

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

Tabela 1. Coerções Suportadas: Mapeamentos Um para Um do Tipo de Dados de Origem para Destino
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. Como o valor Booleano UNKNOWN é igual ao valor NULL para Booleanos, o resultado será 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.

Início da mudançaCHARACTERFim da mudança Início da mudançaBLOBFim da mudança Início da mudançaEssa conversão pode trabalhar de duas formas:
  1. Se você especificar uma cláusula CCSID ou ENCODING, a cadeia inteira será escrita na página de códigos ou codificação que você solicitou. Por exemplo, a cadeia "Cat" em CCSID 850 torna-se uma matriz de três bytes em hexadecimal, 43,61,74.
  2. Se você não especificar a cláusula CCSID nem a ENCODING, a cadeia deverá conter dígitos hexadecimais de dois caracteres na forma X'hhhhhh' ou hhhhhh (em que h pode ser qualquer caractere hexadecimal). Nesse caso, a cadeia de entrada "436174" torna-se a mesma matriz binária de três bytes (43,61,74).

    Observe que será gerado um erro se a cadeia de entrada não estiver no formato correto.

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.

Fim da mudança
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 Se uma cláusula FORMAT não for especificada, a cadeia de caracteres deverá estar em conformidade com as regras de um literal de data ou com a cadeia de data. Ou seja, a cadeia de caracteres pode ser DATE '2002-10-05' ou 2002-10-05.

Consulte também Formatando e Analisando dateTimes como Cadeias.

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 scale e precision definidas pelo formato da cadeia. Isso é convertido em um decimal da precision e scale especificadas, com a geração de um erro de tempo de execução se a conversão resultar na perda de dígitos significativos.

Se precision e scale não forem especificadas, a precision e a scale do resultado serão o mínimo necessário para conter o valor especificado.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando Números como Cadeias.

CHARACTER FLOAT A cadeia de caracteres é interpretada da mesma maneira que o literal ponto flutuante.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando Números como Cadeias.

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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

CHARACTER INTEGER A cadeia de caracteres é interpretada da mesma maneira que um literal inteiro.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando Números como Cadeias.

CHARACTER INTERVAL A cadeia de caracteres deve estar em conformidade com as regras de um literal de intervalo com o mesmo interval qualifier que aquele especificado na função CAST ou deve estar em conformidade com as regras de uma cadeia de intervalo que aplicam-se ao interval qualifier 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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

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 CHARACTER)
retorna
DATE '2002-10-05'

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

DATE DATE O resultado é igual à entrada.
DATE GMTTIMESTAMP O resultado é um valor cujos campos de data são retirados do valor da data de origem e cujos campos de hora são retirados do horário GMT atual.
DATE TIMESTAMP O resultado é um valor cujos campos de data são retirados do valor da data de origem e cujos campos de hora são retirados do horário atual.
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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando Números como Cadeias.

DECIMAL DECIMAL

O valor é convertido para a precision e scale especificadas, com a geração de um erro de tempo de execução se a conversão resultar na perda de dígitos significativos. Se você não especificar precision e scale, o valor, precision e scale serã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 interval qualifier especificado tiver somente um campo, o resultado será 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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando Números como Cadeias.

FLOAT FLOAT O resultado é igual à entrada.
FLOAT DECIMAL

O valor é arredondado e convertido em um decimal da precision e scale especificadas, com a geração de um erro de tempo de execução se a conversão resultar em perda de dígitos significativos. Se precision e scale não forem especificadas, a precision e a scale do resultado serão o mínimo necessário para conter o valor especificado.

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.

FLOAT INTERVAL Se o interval qualifier especificado tiver somente um campo, o resultado será um intervalo com esse qualificador com o campo igual ao valor do numérico. Caso contrário, um erro em tempo de execução é gerado.
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'.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

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.
GMTTIME GMTTIMESTAMP O resultado é um valor cujos campos de data são da data atual e cujos campos de hora são retirados do horário GMT de origem.
GMTTIME TIMESTAMP O resultado é um valor cujos campos de data são retirados da data atual e cujos campos de hora são retirados do horário GMT de origem, mais o deslocamento do fuso horário local (conforme retornado por LOCAL_TIMEZONE).
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'.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

GMTTIMESTAMP DATE O resultado é um valor cujos campos consistem em campos de data do valor de origem GMTTIMESTAMP.
GMTTIMESTAMP GMTTIME O resultado é um valor cujos campos consistem em campos de hora do valor de origem GMTTIMESTAMP.
GMTTIMESTAMP TIME O resultado é um valor cujos campos de hora são retirados do valor GMTTIMESTAMP de origem, mais o deslocamento do fuso horário local (conforme retornado por LOCAL_TIMEZONE). O campo de horas é calculado pelo módulo 24.
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.

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando Números como Cadeias.

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 da precision e scale especificadas, com a geração de um erro de tempo de execução se a conversão resultar na perda de dígitos significativos. Se precision e scale não forem especificadas, a precision e a scale do resultado serão o mínimo necessário para conter o valor especificado.

INTEGER INTERVAL Se o interval qualifier especificado tiver somente um campo, o resultado será 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 CHARACTER)
retorna
INTERVAL '4' YEARS
INTERVAL DECIMAL

Se o valor do intervalo tiver um qualificador que tenha somente um campo, o resultado será um decimal da precision e scale especificadas com esse valor, com a geração de um erro de tempo de execução se a conversão resultar na perda de dígitos significativos. Se o intervalado tiver um qualificador com mais de um campo, como YEAR TO MONTH, um erro em tempo de execução é gerado. Se precision e scale não forem especificadas, a precision e a scale do resultado serão o mínimo necessário para conter o valor especificado.

INTERVAL FLOAT Se o valor do intervalo tiver um qualificador que tenha somente um campo, o resultado será um flutuante 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 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 para um escalar em unidades do campo menos significativo do interval qualifier de destino. Esse valor é normalizado em um intervalo com o interval qualifier 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 CHARACTER)
retorna
TIME
'09:24:15'

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

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 GMTTIMESTAMP O resultado é um valor cujos campos de data são retirados da data atual e cujos campos de hora são retirados do horário GMT de origem, menos o deslocamento do fuso horário local (conforme retornado por LOCAL_TIMEZONE).
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 CHARACTER)
retorna
TIMESTAMP '2002-10-05 09:24:15'

O comportamento é alterado se a cláusula FORMAT é especificada. Consulte também Formatando e Analisando dateTimes como Cadeias.

TIMESTAMP DATE O resultado é um valor cujos campos consistem nos campos de data do valor de data e hora de origem.
TIMESTAMP GMTTIME O resultado é um valor cujos campos de hora são retirados do valor TIMESTAMP de origem, menos o deslocamento do fuso horário local (conforme retornado por LOCAL_TIMEZONE). O campo de horas é calculado pelo módulo 24.
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.
Tabela 2. Coerções Suportadas: Muitos Mapeamentos para Um do Tipo de Dados de Origem para Destino
Tipo de Dados de Origem Tipo de Dados de Destino Efeito
Numérico, Numérico, Numérico DATE Cria um valor de DATE a partir dos numéricos, na ordem de mês, ano e dia. Valores não inteiros são arredondados.
Numérico, Numérico, Numérico HORA Cria um valor de TIME a partir dos numéricos, na ordem de horas, minutos e segundos. Valores não inteiros para horas e minutos são arredondados.
Numérico, Numérico, Numérico GMTIME Cria um valor de GMTTIME a partir dos numéricos, na ordem de horas, minutos e segundos. Valores não inteiros para horas e minutos são arredondados.
Numérico, Numérico, Numérico, Numérico, Numérico, Numérico TIMESTAMP Cria um valor de TIMESTAMP a partir dos numéricos, na ordem de anos, meses, dias, horas, minutos e segundos. Valores não inteiros para anos, meses, dias, horas e minutos são arredondados.
Numérico, Numérico, Numérico, Numérico, Numérico, Numérico GMTTIMESTAMP Cria um valor de GMTIMESTAMP a partir dos numéricos, na ordem de anos, meses, dias, horas, minutos e segundos. Valores não inteiros para anos, meses, dias, horas e minutos são arredondados.
DATE, TIME TIMESTAMP O resultado é um valor de TIMESTAMP com DATE e TIME especificados.
DATE, GMTTIME GMTIMESTAMP O resultado é um valor de GMTTIMESTAMP com DATE e GMTTIME especificados.
Numérico, Numérico INTERVAL YEAR TO MONTH O resultado é um INTERVAL com a primeira origem como anos e a segunda como meses. Valores não inteiros são arredondados.
Numérico, Numérico INTERVAL HOUR TO MINUTE O resultado é um INTERVAL com a primeira origem como horas e a segunda como minutos. Valores não inteiros são arredondados.
Numérico, Numérico, Numérico INTERVAL HOUR TO SECOND O resultado é um INTERVAL com as origens como horas, minutos e segundos, respectivamente. Valores não inteiros para horas e minutos são arredondados.
Numérico, Numérico INTERVAL MINUTE TO SECOND O resultado é um INTERVAL com as origens como minutos e segundos, respectivamente. Valores não inteiros para minutos são arredondados.
Numérico, Numérico INTERVAL DAY TO HOUR O resultado é um INTERVAL com as origens como dias e horas, respectivamente. Valores não inteiros são arredondados.
Numérico, Numérico, Numérico INTERVAL DAY TO MINUTE O resultado é um INTERVAL com as origens como dias, horas e minutos, respectivamente. Valores não inteiros são arredondados.
Numérico, Numérico, Numérico, Numérico INTERVAL DAY TO SECOND O resultado é um INTERVAL com as origens como dias, horas, minutos e segundos, respectivamente. Valores não inteiros para dias, horas e minutos são arredondados.
Numérico INTERVAL YEAR O resultado é um INTERVAL com a origem como horas, arredondado se necessário.
Numérico INTERVAL MONTH O resultado é um INTERVAL com a origem como meses, arredondado se necessário.
Numérico INTERVAL DAY O resultado é um INTERVAL com a origem como dias, arredondado se necessário.
Numérico INTERVAL HOUR O resultado é um INTERVAL com a origem como horas, arredondado se necessário.
Numérico INTERVAL MINUTE O resultado é um INTERVAL com a origem como minutos, arredondado se necessário.
Numérico INTERVAL SECOND O resultado é um INTERVAL com a origem como segundos.
Conceitos relacionados
Visão Geral do ESQL
Tipos de Dados ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Referências relacionadas
Funções Complexas ESQL
Função CAST
Casts Implícitos
Tipos de Dados de Valores de Origens Externas
Páginas de Códigos Suportadas
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05680_