2009-06-24 14 views
6

Estoy escribiendo una consulta para hacer algunas cosas. Pero no su trabajo de la manera que yo quiero que:Conversión de tipo de datos en IBM DB2: BIGINT a VARCHAR

select CORR_ID from TABLE1 
where CORR_ID not in (select id from TABLE2) 

El problema es, TABLE2.id es un largo, mientras que TABLE1.CORR_ID es una cadena.

Entonces, ¿cómo puedo hacer que funcione?

PD: Estoy usando IBM UDB.

+0

Título redacción es muy importante si se quiere atraer a la gente a su pregunta. "Mi consulta no funciona" es un tipo de título que la mayoría de la gente ignorará. Sin embargo, si su título indica que tiene un problema específico, será más probable que la gente lo mire más de cerca. – Welbog

+0

ty. – jrharshath

Respuesta

14

Vale , he encontrado un método:

select CORR_ID from TABLE1 where CORR_ID not in 
(select CAST(CAST(id AS CHAR(50)) AS VARCHAR(50)) from TABLE2) 

Esto es bastante intrigante: no se puede emitir un BIGINT a VARCHAR, pero:

  • puede emitir un BIGINT en CHAR
  • y se puede emitir un CHAR a VARCHAR

esto es ridículo!

1

Usted debe ser capaz de lanzar la columna ID seleccionada para que coincida con el tipo de datos de corr_id

seleccione CORR_ID de la Tabla1 donde CORR_ID no en (seleccione fundido (id como varchar) de TABLA2)

+0

echa un vistazo a mi ans – jrharshath

+0

mucho mejor que mi respuesta. Yo votaría si tuviera 2 puntos de rep. – GregA100k

2

DB2 permite comparar una columna VARCHAR y CHAR sin conversión adicional, por lo que todo lo que necesita hacer es emitir el número.

corr_id SELECT FROM tabla1 DONDE NO EN corr_id (SELECT CHAR (id) de la Tabla 2)

Cuestiones relacionadas