2009-06-24 15 views
6

私はいくつかのことを行うためのクエリを書いています。しかし、その私はそれを望むように動作していない:TABLE1.CORR_IDが文字列である時に問題があるIBM DB2のデータ型変換:BIGINTからVARCHAR

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

を、TABLE2.idは、長いです。

どうすればいいですか?

PS:IBM UDBを使用しています。

+0

タイトルフレージングは​​非常に重要です。 「私のクエリが壊れている」とは、ほとんどの人が無視する一種のタイトルです。しかし、あなたのタイトルが特定の問題を抱えていることを示していれば、人々はもっとよく見ることができます。 – Welbog

+0

タイ。 – jrharshath

答えて

14

さてTABLE1 から

corr_id選択CORR_IDのデータ型と一致するように選択されたID列をキャストすることができなければなりません、私は方法を見つけました:あなたはVARCHARにBIGINTをキャストすることはできませんが、::

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

これはかなり興味をそそられる

  • あなたはBIGINTは
  • をCHARにキャストすることができますし、VARCHAR

TO CHARを、これはばかげているキャストすることができます!

1

あなたはCORR_ID NOT IN(TABLE2からキャスト(VARCHARとしてID)を選択)

+0

私の答えよりもはるかに良い私のans – jrharshath

+0

をチェックしてください。私は2つの追加のポイントを持っていれば私はそれを投票したい – GregA100k

2

DB2では、追加のキャストなしでVARCHAR列とCHAR列を比較できます。実際に行う必要があるのは、数値をキャストすることだけです。あなたがあなたの質問に人々を魅了したい場合にNOT IN(CHAR table2のFROM(ID)を選択)corr_id TABLE1 FROM

SELECT corr_idは

関連する問題