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 转换为 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 的数据类型

从 TABLE1 中选择 CORR_ID,其中 CORR_ID 不在(从 TABLE2 中选择 cast(id as varchar))

于 2009-06-24T14:34:58.227 回答