2009-06-24 8 views
6

Ich schreibe eine Abfrage, um etwas zu tun. Aber es funktioniert nicht so, wie ich es will:Umwandlung von Datentypen in IBM DB2: BIGINT in VARCHAR

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

Das Problem ist, ist TABLE2.id ein langer, während TABLE1.CORR_ID eine Zeichenfolge ist.

Also, wie kann ich es funktionieren lassen?

PS: Ich verwende IBM UDB.

+0

Titel Formulierung ist sehr wichtig, wenn man die Leute auf Ihre Frage anziehen wollen. "Meine Abfrage ist kaputt" ist eine Art Titel, den die meisten ignorieren. Wenn Ihr Titel jedoch anzeigt, dass Sie ein spezifisches Problem haben, werden die Menschen mit größerer Wahrscheinlichkeit genauer hinsehen. – Welbog

+0

ty. – jrharshath

Antwort

14

Ok , fand ich eine Methode:

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

Das ist ziemlich interessant: Sie können keine BIGINT VARCHAR, aber:

  • können Sie ein BIGINT werfen
  • in CHAR und Sie können eine CHAR VARCHAR

diese lächerliche gegossen!

1

Sie sollten die ausgewählte Spalte id werfen können, den Datentyp corr_id

wählen CORR_ID von TABLE1 zu entsprechen, wo CORR_ID nicht in (wählen Besetzung (id als varchar) von TABLE2)

+0

check out meine ans – jrharshath

+0

viel besser als meine Antwort. Ich würde es ablehnen, wenn ich noch zwei Rep-Punkte hätte – GregA100k

2

DB2 ermöglicht den Vergleich einer VARCHAR- und CHAR-Spalte ohne zusätzliches Casting. Sie müssen also nur die Zahl umwandeln.

SELECT corr_id FROM table1 WHERE corr_id NOT IN (SELECT CHAR (id) FROM table2)

Verwandte Themen