在下面的查询中想要在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'
我该怎么做?
只需将该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'
投射到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
转换为char很好,但它将具有所有空间填充,因此在转换为char之后,您必须将char转换为varchar然后再转换为RTRIM。