Transformaciones CAST soportadas

En este tema se listan las transformaciones CAST soportadas entre las diferentes combinaciones de tipos de datos.

No en todas las combinaciones de tipos de datos están soportadas las transformaciones CAST. A continuación se listan las transformación CAST soportadas junto con el efecto de las mismas.

Al efectuar transformaciones, puede haber una correlación uno a uno o muchos a uno entre el tipo de datos de origen y el tipo de datos de destino. Un ejemplo de correlación uno a uno es cuando el tipo de datos de origen es un solo entero y el tipo de datos de destino un solo flotante. Un ejemplo de correlación muchos a uno es cuando los datos de origen constan de tres enteros que se convierten a una sola fecha. Tabla 1 lista las transformaciones uno a uno soportadas. Tabla 2 lista las transformaciones muchos a uno soportadas.

Consulte Tipos de datos ESQL para obtener información acerca de la precisión, escala y calificador de intervalo.

Tabla 1. Transformaciones soportadas: correlaciones uno a uno de tipo de datos de origen a tipo de datos de destino
Tipo de datos de origen Tipo de datos de destino Efecto
BIT BIT El resultado es el mismo que la entrada.
BIT BLOB La matriz de bits se convierte en una matriz de bytes con un máximo de 263 elementos. Se genera un error si el origen no tiene una longitud adecuada para generar un BLOB (esto es, un múltiplo de 8).
BIT CHARACTER El resultado es una serie que se ajusta a la definición de un literal de serie de bits cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato B'bbbbbb' (donde b es 0 ó 1).

Si especifica una cláusula CCSID o ENCODING, se presupone que la matriz de bits son caracteres en la codificación y CCSID especificados y su página de códigos se convierte al valor de retorno de caracteres.

Si especifica solamente CCSID, se presupone una codificación de big endian.

Si sólo especifica una codificación, se presupone un CCSID de 1208.

Esta función genera errores de conversión si la página de códigos o la codificación se desconocen, los datos proporcionados no son un número integral de caracteres de la página de códigos o si los datos contienen caracteres que no son válidos en la página de códigos concreta.

BIT INTEGER La matriz de bits tiene un máximo de 263 elementos y se convierte en un entero. Se genera un error si el origen no tiene la longitud correcta para coincidir con un entero.
BLOB BIT La matriz de bytes se convierte en una matriz de bits con un máximo de 263 elementos.
BLOB BLOB El resultado es el mismo que la entrada.
BLOB CHARACTER El resultado es una serie que se ajusta a la definición de un literal de serie de binario cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato X'hhhh' (donde h es cualquier carácter hexadecimal).

Si especifica una cláusula CCSID o ENCODING, se presupone que la matriz de bits son caracteres en la codificación y CCSID especificados y su página de códigos se convierte al valor de retorno de caracteres.

Si especifica solamente CCSID, se presupone una codificación de big endian.

Si sólo especifica una codificación, se presupone un CCSID de 1208.

Esta función genera errores de conversión si la página de códigos o la codificación se desconocen, los datos proporcionados no son un número integral de caracteres de la página de códigos o si los datos contienen caracteres que no son válidos en la página de códigos concreta.

BLOB INTEGER La matriz de bytes tiene un máximo de 263 elementos y se convierte en un entero. Se genera un error si el origen no tiene la longitud correcta para coincidir con un entero.
BOOLEAN BOOLEAN El resultado es el mismo que la entrada.
BOOLEAN CHARACTER Si el valor de origen es TRUE, el resultado es la serie de caracteres TRUE. Si el valor de origen es FALSE, el resultado es la serie de caracteres FALSE. Puesto que el valor booleano UNKNOWN es igual que el valor NULL para booleanos, el resultado es NULL si el valor de origen es UNKNOWN.
CHARACTER BIT La serie de caracteres se debe ajustar a las normas para un literal de serie de bits o para el contenido del literal de serie de bits. Esto es, la serie de caracteres puede tener el formato B'bbbbbbb' o bbbbbb (donde b' puede ser 0 ó 1).

Si especifica una cláusula CCSID o ENCODING, la serie de caracteres se convierte a la codificación y CCSID especificados y se colocan sin ninguna conversión adicional en el valor de retorno de matriz de bits.

Si especifica solamente CCSID, se presupone una codificación de big endian.

Si sólo especifica una codificación, se presupone un CCSID de 1208.

Esta función genera errores de conversión si la página de códigos o la codificación se desconocen o si los datos contienen caracteres Unicode que no se pueden convertir a la página de códigos concreta.

Inicio del cambioCHARACTERFin del cambio Inicio del cambioBLOBFin del cambio Inicio del cambioEsta transformación puede funcionar de dos formas:
  1. Si especifica una cláusula CCSID o ENCODING, toda la serie se escribe en la página de códigos o codificación que haya solicitado. Por ejemplo, la serie "Cat" en CCSID 850 se convierte en la matriz de tres bytes en hexadecimal, 43,61,74.
  2. Si no especifica la cláusula CCSID ni la ENCODING, la serie debe contener en sí misma dígitos hexadecimales de dos caracteres con el formato X'hhhhhh' o hhhhhh (en el que h puede ser cualquier carácter hexadecimal). En este caso, la serie de entrada "436174" se convierte en la misma matriz binaria de tres bytes (43,61,74).

    Tenga en cuenta que se genera un error si la serie de entrada no tiene el formato correcto.

Si especifica solamente CCSID, se presupone una codificación de big endian.

Si sólo especifica una codificación, se presupone un CCSID de 1208.

Esta función genera errores de conversión si la página de códigos o la codificación se desconocen o si los datos contienen caracteres Unicode que no se pueden convertir a la página de códigos concreta.

Fin del cambio
CHARACTER BOOLEAN La serie de caracteres se interpreta del mismo modo que un literal booleano. Esto es, la serie de caracteres debe ser una de las series TRUE, FALSE o UNKNOWN (en cualquier combinación de mayúsculas y minúsculas).
CHARACTER CHARACTER El resultado es el mismo que la entrada.
CHARACTER DATE Si no se especifica una cláusula FORMAT, la serie de caracteres debe satisfacer las normas de un literal de fecha o la serie de caracteres de fecha. Esto es, la serie de caracteres puede tener el formato DATE '2002-10-05' o 2002-10-05.

Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

CHARACTER DECIMAL La serie de caracteres se interpreta del mismo modo que un literal numérico exacto para crear un resultado decimal temporal con una escala y precisión definidos por el formato de la serie de caracteres. Este se convierte a un decimal de la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos.

Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres.

CHARACTER FLOAT La serie de caracteres se interpreta del mismo modo que un literal de punto flotante.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres.

CHARACTER GMTTIME La serie de caracteres se debe ajustar a las normas para un literal de hora GMT o una serie de caracteres de hora. Esto es, la serie de caracteres puede ser GMTTIME '09:24:15' o 09:24:15.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

CHARACTER GMTTIMESTAMP La serie de caracteres se debe ajustar a las normas para un literal de indicación de la hora GMT o una serie de caracteres de indicación de la hora. Esto es, la serie de caracteres puede tener el formato GMTTIMESTAMP '2002-10-05 09:24:15' o 2002-10-05 09:24:15.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

CHARACTER INTEGER La serie de caracteres se interpreta del mismo modo que un literal entero.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres.

CHARACTER INTERVAL La serie de caracteres se debe ajustar a las normas para un literal de intervalo con el mismo calificador de intervalo que el especificado en la función CAST, o se debe ajustar a las normas para una serie de caracteres de intervalo que se aplica al calificador de intervalo especificado.
CHARACTER TIME La serie de caracteres se debe ajustar a las normas para un literal de hora o para la serie de caracteres de hora. Esto es, la serie de caracteres puede ser TIME '09:24:15' o 09:24:15.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

CHARACTER TIMESTAMP La serie de caracteres se debe ajustar a las normas para un literal de indicación de la hora GMT o una serie de caracteres de indicación de la hora. Esto es, la serie de caracteres puede tener el formato TIMESTAMP '2002-10-05 09:24:15' o 2002-10-05 09:24:15.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

DATE CHARACTER El resultado es una serie que se ajusta a la definición de un literal de fecha cuyo valor interpretado es el mismo que el valor de fecha de origen.
Por ejemplo:
CAST(DATE '2002-10-05' AS CHARACTER)
devuelve
DATE '2002-10-05'

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

DATE DATE El resultado es el mismo que la entrada.
DATE GMTTIMESTAMP El resultado es un valor cuyos campos de fecha se toman del valor de fecha de origen y cuyos campos de hora se toman de la hora GMT actual.
DATE TIMESTAMP El resultado es un valor cuyos campos de fecha se toman del valor de fecha de origen y cuyos campos de hora se toman de la hora actual.
DECIMAL CHARACTER El resultado es la serie de caracteres más corta que se ajusta a la definición de un literal numérico exacto y cuyo valor interpretado es el valor del decimal.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres.

DECIMAL DECIMAL

El valor se convierte a la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión ni la escala, se conservan el valor, la precisión y la escala. Se trata de un NOOP (sin operación).

DECIMAL FLOAT El número se convierte con redondeo, si es necesario.
DECIMAL INTEGER

El valor se redondea y convierte en un entero y se genera un error de ejecución si durante la conversión se pierden dígitos significativos.

DECIMAL INTERVAL Si el calificador de intervalo especificado sólo tiene un campo, el resultado es un intervalo con dicho calificador y el campo es igual al valor del numérico exacto. De lo contrario, se genera un error de ejecución.
FLOAT CHARACTER El resultado es la serie de caracteres más corta que se ajusta a la definición de un literal numérico y cuya mantisa consta de un solo dígito que no es 0, seguido de un punto y un entero sin signo y cuyo valor interpretado es el valor de FLOAT.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres.

FLOAT FLOAT El resultado es el mismo que la entrada.
FLOAT DECIMAL

El valor se redondea y se convierte a un decimal de la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado.

FLOAT INTEGER

El valor se redondea y convierte en un entero y se genera un error de ejecución si durante la conversión se pierden dígitos significativos.

FLOAT INTERVAL Si el calificador de intervalo especificado sólo tiene un campo, el resultado es un intervalo con dicho calificador y el campo es igual al valor del numérico. De lo contrario, se genera un error de ejecución.
GMTTIME CHARACTER El resultado es una serie que se ajusta a la definición de un literal GMTTIME cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato GMTTIME 'hh:mm:ss'.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

GMTTIME GMTTIME El resultado es el mismo que la entrada.
GMTTIME TIME El valor resultante es el valor de origen más el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado.
GMTTIME GMTTIMESTAMP El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toman de la hora GMT de origen.
GMTTIME TIMESTAMP El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toman de la hora GMT de origen, más el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE).
GMTTIMESTAMP CHARACTER El resultado es una serie que se ajusta a la definición de un literal GMTTIMESTAMP cuyo valor interpretado es el mismo que el valor de origen. La serie resultante tiene el formato GMTTIMESTAMP 'aaaa-mm-dd hh:mm:ss'.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

GMTTIMESTAMP DATE El resultado es un valor cuyos campos constan de los campos de fecha del valor GMTTIMESTAMP de origen.
GMTTIMESTAMP GMTTIME El resultado es un valor cuyos campos constan de los campos de hora del valor GMTTIMESTAMP de origen.
GMTTIMESTAMP TIME El resultado es un valor cuyos campos de hora se toman del valor GMTTIMESTAMP de origen, más el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado.
GMTTIMESTAMP GMTTIMESTAMP El resultado es el mismo que la entrada.
GMTTIMESTAMP TIMESTAMP El valor resultante es el valor de origen más el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE).
INTEGER BIT El entero proporcionado se convierte en una matriz de bits con un máximo de 263 elementos.
INTEGER BLOB El entero proporcionado se convierte en una matriz de bytes con un máximo de 263 elementos.
INTEGER CHARACTER El resultado es la serie de caracteres más corta que se ajusta a la definición de un literal numérico exacto y cuyo valor interpretado es el valor del entero.

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de números como series de caracteres.

INTEGER FLOAT El número se convierte con redondeo, si es necesario.
INTEGER INTEGER El resultado es el mismo que la entrada.
INTEGER DECIMAL

El valor se convierte a un decimal de la precisión y escala especificadas y se genera un error de ejecución si durante la conversión se pierden dígitos significativos. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado.

INTEGER INTERVAL Si el calificador de intervalo especificado sólo tiene un campo, el resultado es un intervalo con dicho calificador y el campo es igual al valor del numérico exacto. De lo contrario, se genera un error de ejecución.
INTERVAL CHARACTER El resultado es una serie que se ajusta a la definición de un literal de fecha cuyo valor interpretado es el mismo que el valor de intervalo de origen.
Por ejemplo:
CAST(INTERVAL '4' YEARS AS CHARACTER)
devuelve
INTERVAL '4' YEARS
INTERVAL DECIMAL

Si el valor de intervalo tiene un calificador con un solo campo, el resultado es un decimal de la precisión y escala especificadas con dicho valor y se genera un error de ejecución si durante la conversión se pierden datos significativos. Si el intervalo tiene un calificador con más de un campo, por ejemplo, YEAR TO MONTH, se genera un error de ejecución. Si no especifica la precisión y la escala, en el resultado, la precisión y la escala tendrán el valor mínimo necesario para contener el valor especificado.

INTERVAL FLOAT Si el valor de intervalo tiene un calificador con un solo campo, el resultado es un valor flotante con dicho valor. Si el intervalo tiene un calificador con más de un campo, por ejemplo, YEAR TO MONTH, se genera un error de ejecución.
INTERVAL INTEGER

Si el valor de intervalo tiene un calificador con un solo campo, el resultado es un entero con dicho valor. Si el intervalo tiene un calificador con más de un campo, por ejemplo, YEAR TO MONTH, se genera un error de ejecución.

INTERVAL INTERVAL El resultado es el mismo que la entrada.

Los intervalos de año-mes sólo se pueden convertir a intervalos de años y mes, y los intervalos de día-segundo sólo se pueden convertir a intervalos de día-segundo. El intervalo de origen se convierte a un escalar en unidades del campo menos significativo del calificador de intervalo de destino. Este valor se normaliza en un intervalo con el calificador de intervalo de destino. Por ejemplo, para convertir un intervalo que tiene el calificador MINUTE TO SECOND en un intervalo con el calificador DAY TO HOUR, el valor de origen se convierte en una escala en unidades de horas y este valor se normaliza en un intervalo con el calificador DAY TO HOUR.

TIME CHARACTER El resultado es una serie que se ajusta a la definición de un literal TIME cuyo valor interpretado es el mismo que el valor de hora de origen.
Por ejemplo:
CAST(TIME '09:24:15' AS CHARACTER)
devuelve
TIME '09:24:15'

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

TIME GMTTIME El valor resultante es el valor de origen menos el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado.
TIME GMTTIMESTAMP El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toman de la hora GMT de origen, menos el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE).
TIME TIME El resultado es el mismo que la entrada.
TIME TIMESTAMP El resultado es un valor cuyos campos de fecha se toman de la fecha actual y cuyos campos de hora se toma del valor de hora de origen.
TIMESTAMP CHARACTER El resultado es una serie que se ajusta a la definición de un literal TIMESTAMP, cuyo valor interpretado es el mismo que el valor de indicación de la hora de origen.
Por ejemplo:
CAST(TIMESTAMP '2002-10-05 09:24:15' AS CHARACTER)
devuelve
TIMESTAMP '2002-10-05 09:24:15'

El funcionamiento cambia si se especifica la cláusula FORMAT. Consulte también Formato y análisis de valores de fecha y hora como series de caracteres.

TIMESTAMP DATE El resultado es un valor cuyos campos constan de los campos de fecha del valor de indicación de la hora de origen.
TIMESTAMP GMTTIME El resultado es un valor cuyos campos de hora se toman del valor TIMESTAMP de origen, menos el desplazamiento del huso horario local (como lo devuelve LOCAL_TIMEZONE). El campo de horas es el formato 24 horas calculado.
TIMESTAMP GMTTIMESTAMP El valor resultante es el valor de origen menos el desplazamiento del huso horario local (como lo ha devuelto LOCAL_TIMEZONE).
TIMESTAMP TIME El resultado es un valor cuyos campos constan de los campos de hora del valor de indicación de la hora de origen.
TIMESTAMP TIMESTAMP El resultado es el mismo que la entrada.
Tabla 2. Transformaciones soportadas: correlaciones muchos a uno de tipo de datos de origen a tipo de datos de destino
Tipo de datos de origen Tipo de datos de destino Efecto
Numérico, Numérico, Numérico DATE Crea un valor DATE a partir de los valores numéricos en el orden año, mes y día. Se redondean los valores que no son enteros.
Numérico, Numérico, Numérico TIME Crea un valor TIME a partir de los valores numéricos en el orden horas, minutos y segundos. Para horas y minutos se redondean los valores que no son enteros.
Numérico, Numérico, Numérico GMTIME Crea un valor GMTTIME a partir de los valores numéricos en el orden horas, minutos y segundos. Para horas y minutos se redondean los valores que no son enteros.
Numérico, Numérico, Numérico, Numérico, Numérico, Numérico TIMESTAMP Crea un valor TIMESTAMP a partir de los valores numéricos en el orden años, meses, días, horas, minutos y segundos. Para años, meses, días, horas y minutos se redondean los valores que no son enteros.
Numérico, Numérico, Numérico, Numérico, Numérico, Numérico GMTTIMESTAMP Crea un valor GMTTIMESTAMP a partir de los valores numéricos en el orden años, meses, días, horas, minutos y segundos. Para años, meses, días, horas y minutos se redondean los valores que no son enteros.
DATE, TIME TIMESTAMP El resultado es un valor TIMESTAMP con los valores DATE y TIME especificados.
DATE, GMTTIME GMTIMESTAMP El resultado es un valor GMTTIMESTAMP con los valores DATE y GMTTIME especificados.
Numérico, Numérico INTERVAL YEAR TO MONTH El resultado es un valor de INTERVAL con el primer origen como años y el segundo como meses. Se redondean los valores que no son enteros.
Numérico, Numérico INTERVAL HOUR TO MINUTE El resultado es un valor de INTERVAL con el primer origen como horas y el segundo como minutos. Se redondean los valores que no son enteros.
Numérico, Numérico, Numérico INTERVAL HOUR TO SECOND El resultado es un valor de INTERVAL con los valores origen como horas, minutos y segundos, respectivamente. Para horas y minutos se redondean los valores que no son enteros.
Numérico, Numérico INTERVAL MINUTE TO SECOND El resultado es un valor de INTERVAL con los valores origen como minutos y segundos, respectivamente. Para minutos se redondean los valores que no son enteros.
Numérico, Numérico INTERVAL DAY TO HOUR El resultado es un valor de INTERVAL con los valores origen como días y horas, respectivamente. Se redondean los valores que no son enteros.
Numérico, Numérico, Numérico INTERVAL DAY TO MINUTE El resultado es un valor de INTERVAL con los valores origen como días, horas y minutos, respectivamente. Se redondean los valores que no son enteros.
Numérico, Numérico, Numérico, Numérico INTERVAL DAY TO SECOND El resultado es un valor de INTERVAL con los valores origen como días, horas, minutos y segundos, respectivamente. Para días, horas y minutos se redondean los valores que no son enteros.
Numérico INTERVAL YEAR El resultado es un valor de INTERVAL con el origen como años, con el valor redondeado si fuera necesario.
Numérico INTERVAL MONTH El resultado es un valor de INTERVAL con el origen como meses, con el valor redondeado si fuera necesario.
Numérico INTERVAL DAY El resultado es un valor de INTERVAL con el origen como días, con el valor redondeado si fuera necesario.
Numérico INTERVAL HOUR El resultado es un valor de INTERVAL con el origen como horas, con el valor redondeado si fuera necesario.
Numérico INTERVAL MINUTE El resultado es un valor de INTERVAL con el origen como minutos, con el valor redondeado si fuera necesario.
Numérico INTERVAL SECOND El resultado es un valor de INTERVAL con el origen como segundos.
Conceptos relacionados
Visión general de ESQL
Tipos de datos ESQL
Tareas relacionadas
Desarrollo de ESQL
Referencia relacionada
Funciones ESQL complejas
Función CAST
Transformaciones CAST implícitas
Tipos de datos de valores de fuentes externas
Páginas de códigos soportadas
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05680_