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