我正在写一个查询来做一些事情。但它不按我想要的方式工作:
select CORR_ID from TABLE1
where CORR_ID not in (select id from TABLE2)
问题是,TABLE2.id是一个long,而TABLE1.CORR_ID是一个字符串。
那我怎样才能让它发挥作用呢?
PS:我正在使用IBM UDB。
答案 0 :(得分:15)
好的,我找到了一个方法:
select CORR_ID from TABLE1 where CORR_ID not in
(select CAST( CAST(id AS CHAR(50)) AS VARCHAR(50) ) from TABLE2)
这非常有趣:你不能将BIGINT转换为VARCHAR,但是:
这太荒谬了!
答案 1 :(得分:2)
DB2允许比较VARCHAR和CHAR列而无需额外的转换,因此您真正需要做的就是转换数字。
SELECT corr_id FROM table1 WHERE corr_id NOT IN(SELECT CHAR(id)FROM table2)
答案 2 :(得分:1)
您应该能够转换选定的id列以匹配corr_id
的数据类型从TABLE1中选择CORR_ID 其中CORR_ID不在(从TABLE2中选择强制转换(id为varchar))