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.
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. |
![]() ![]() |
![]() ![]() |
![]()
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 | 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. |
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. |