在下面的查询中想要在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'
我该怎么做?
答案 0 :(得分: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'
答案 1 :(得分: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
答案 2 :(得分:0)
强制转换为char是好的,但是它将具有所有空格填充,因此在转换为char之后,您必须将char转换为varchar,然后再转换为RTRIM。