2009-06-24 39 views
6

我在写一个查询来完成一些工作。但它不工作,我希望它的方式:IBM DB2中的数据类型转换:BIGINT到VARCHAR

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

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

那么我该如何让它工作? PS:我正在使用IBM UDB。

+0

标题措辞是非常重要的。 “我的查询被打破”是大多数人会忽视的一种标题。但是,如果你的头衔表明你有一个特定的问题,那么人们更可能仔细观察。 – Welbog 2009-06-24 14:19:59

+0

ty。 – jrharshath 2009-06-24 14:20:27

回答

14

好,我发现了一个方法:

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

这太荒谬了!

1

你应该能够投出选择的ID列corr_id

选择CORR_ID的数据类型从TABLE1 匹配,其中CORR_ID不在(选择TABLE2投(ID为varchar))

2

DB2允许比较VARCHAR和CHAR列而无需额外投射,所以您真正需要做的就是投射数字。

SELECT corr_id FROM表1 WHERE corr_id NOT IN(SELECT CHAR(ID)FROM表2),如果你想吸引人们到你的问题

相关问题