2

在下面的查询中,想在其他部分给出整数值。如果我给出,错误是:错误代码 -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'

我该怎么做?

4

3 回答 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'
于 2013-07-09T07:04:30.523 回答
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

于 2014-12-04T22:40:55.107 回答
0

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

于 2018-03-06T12:01:03.160 回答