6

私はいくつかのことをするためにクエリを書いています。しかし、それは私が望むように機能していません:

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

問題は、TABLE2.id が長いのに対して、TABLE1.CORR_ID が文字列であることです。

では、どうすれば機能させることができますか?

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

4

3 に答える 3

17

さて、私は方法を見つけました:

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

これはかなり興味深いです。BIGINT を VARCHAR にキャストすることはできませんが、

  • BIGINT を CHAR にキャストできます
  • CHAR TO VARCHAR をキャストできます

ばかげてる!

于 2009-06-24T14:36:49.890 に答える
2

DB2 では、追加のキャストなしで VARCHAR 列と CHAR 列を比較できるため、実際に行う必要があるのは数値をキャストすることだけです。

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

于 2009-06-24T18:46:14.503 に答える
1

選択した id 列をキャストして、corr_id のデータ型に一致させることができるはずです

CORR_IDが含まれていないTABLE1からCORR_IDを選択します(TABLE2からcast(id as varchar)を選択します)

于 2009-06-24T14:34:58.227 に答える