数据类型转换在IBM DB2:BIGINT为VARCHAR(Datatype conversion

2019-09-16 21:28发布

我正在写一个查询做一些东西。 但它不工作,我希望它的方式:

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

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

所以,我怎样才能使它发挥作用?

PS:我使用的是IBM UDB。

Answer 1:

好吧,我发现了一个方法:

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

这是荒唐的!



Answer 2:

DB2允许不需要额外铸造出要比较的VARCHAR和CHAR列,所以你真正需要做的是投的数量。

SELECT corr_id FROM表1 WHERE corr_id NOT IN(SELECT CHAR(ID)FROM表2)



Answer 3:

你应该能够投选定的id列匹配corr_id的数据类型

从TABLE1选择CORR_ID其中CORR_ID不在(选择TABLE2投(ID为varchar))



文章来源: Datatype conversion in IBM DB2: BIGINT to VARCHAR
标签: sql db2 udb