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