multiple fields fechas concatenate concatenar columns cadenas as400 db2 concatenation mainframe

db2 - fields - CONCATENATION, smallint, entero en una columna entera



db2 concatenar fechas (1)

DB2 V9 z / os

Fondo: Tengo una tabla de 4 columnas definida como (col1 int, col2 smallint, col3 int, col4 date)

La fila 1 tiene valores de (1,123,456,2012-08-23)

Cuando ejecuto lo siguiente:

SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5)) FROM db.T1 WHERE col1 = 1;

Se devuelve el valor 123456, que es exactamente lo que quiero.

Cuando ejecuto lo siguiente:

UPDATE db.table2 SET col3 = SELECT CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5)) FROM db.T1 WHERE col1 = 1;

El error es:

SQL0408N Un valor no es compatible con el tipo de datos de su destino de asignación. El nombre del objetivo es "col3". SQLSTATE = 42821

Entiendo que el error se debe a intentar insertar un varchar en un entero. ¿Que más puedo hacer? He intentado usar varias declaraciones CAST pero no puedo obtener un valor para insertar en col3. Necesito que el valor aparezca unido como se muestra arriba.

Cualquier ayuda sería apreciada.


Envolver todos los moldes como un cast( ... as integer) final cast( ... as integer) debería funcionar:

UPDATE db.table2 SET col3 = SELECT CAST( CAST(col2 AS VARCHAR(5)) CONCAT CAST(col3 AS VARCHAR(5)) AS INTEGER) FROM db.T1 WHERE col1 = 1;