在java derby DB中从INTEGER转换CHAR

问题描述 投票:2回答:3

在下面的查询中想要在else部分给出整数值。如果我给,错误是:错误代码-1,SQL状态42X89:类型'CHAR'和'INTEGER'不是类型兼容的。这两种类型都不能分配给另一种类型。

select case
when ID = 1 then 'Issue'
when ID = 2 then 'Reload'
when ID = 3 then 'Redeem'
else ID
end
from TXN
where CARDNO = '10001'

我该怎么做?

sql derby
3个回答
1
投票

只需将该ID转换为VARCHAR()

select case
when ID = 1 then 'Issue'
when ID = 2 then 'Reload'
when ID = 3 then 'Redeem'
else CAST(ID AS VARCHAR(2))
end
from TXN
where CARDNO = '10001'

0
投票

投射到CHAR而不是VARCHAR

select case
when ID = 1 then 'Issue'
when ID = 2 then 'Reload'
when ID = 3 then 'Redeem'
else CAST(ID AS CHAR(10))
end
from TXN
where CARDNO = '10001'

铸造的兼容类型:http://db.apache.org/derby/docs/10.2/ref/rrefsqlj33562.html


0
投票

转换为char很好,但它将具有所有空间填充,因此在转换为char之后,您必须将char转换为varchar然后再转换为RTRIM。

© www.soinside.com 2019 - 2024. All rights reserved.