IBM DB2中的数据类型转换:BIGINT到VARCHAR

时间:2009-06-24 14:17:55

标签: sql db2 udb

我正在写一个查询来做一些事情。但它不按我想要的方式工作:

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

问题是,TABLE2.id是一个long,而TABLE1.CORR_ID是一个字符串。

那我怎样才能让它发挥作用呢?

PS:我正在使用IBM UDB。

3 个答案:

答案 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,但是:

  • 您可以将BIGINT投射到CHAR
  • 您可以施放CHAR TO 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))