2009-06-24 17 views
6

Sto scrivendo una query per fare qualcosa. Ma la sua non funziona il modo in cui voglio che:Conversione dei tipi di dati in IBM DB2: BIGINT in VARCHAR

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

Il problema è, TABLE2.id è un lungo, mentre TABLE1.CORR_ID è una stringa.

Quindi, come posso farlo funzionare?

PS: sto utilizzando IBM UDB.

+0

Titolo fraseggio è molto importante se si vuole attirare la gente alla tua domanda. "La mia domanda è rotta" è una sorta di titolo che la maggior parte delle persone ignorerà. Tuttavia, se il titolo indica che hai un problema specifico, le persone saranno più propense a dare un'occhiata più da vicino. – Welbog

+0

ty. – jrharshath

risposta

14

Ok , ho trovato un metodo:

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

Questo è abbastanza intrigante: non è possibile gettare un BIGINT a VARCHAR, ma:

  • si può lanciare un BIGINT a char
  • e si può lanciare un char a VARCHAR

questo è ridicolo!

1

Si dovrebbe essere in grado di lanciare la colonna id selezionato in base al tipo di dati di corr_id

selezionare CORR_ID da TABLE1 dove CORR_ID non in (selezionare cast (id come varchar) da TABLE2)

+0

controlla le mie ans – jrharshath

+0

molto meglio della mia risposta. Lo voterei se avessi altri 2 punti rep – GregA100k

2

DB2 consente di confrontare una colonna VARCHAR e CHAR senza ulteriore cast, quindi tutto ciò che è veramente necessario fare è trasmettere il numero.

SELEZIONA corr_id FROM tabella1 WHERE corr_id NOT IN (SELECT CHAR (id) FROM tabella2)

Problemi correlati