我们的一位客户要求提供有关客户的信息。
我已经编写了下面的查询,以提取客户列表。
select * from customer;
Id | Name | Status
----+----------+-----------
1 Azam 0
2 Kapil 1
3 Osama 2
但问题是"状态" column,这是java代码的枚举(我们已经使用了hibernate for ORM)。 因此,它以数字形式存储在数据库中。问题是,我必须更换"状态"中的数字。 在将数据发送给客户之前具有常量的列,因为客户不了解数字。我这样做 通过生成结果集的Excel文件并修改“状态”列值。
E.x。 在“状态”列中: 0表示Prospect,1表示Active,2表示Existing。
是否有办法修改查询返回的结果集,以便仅从Oracle获取以下内容:
select * from customer;
Id | Name | Status
----+----------+------------
1 Azam Prospect
2 Kapil Active
3 Osama Existing
答案 0 :(得分:2)
我认为您可以通过以下方式使用解码功能:
select id,name,decode(status,0,'Prospect',1,'Active',2,'Existing) from customer;
此致 Giova
答案 1 :(得分:1)
如果您有一个包含状态详细信息的表,那么只需加入该表并输出状态描述即可。
如果您没有,并且您知道状态编号/说明不会发生变化,那么您可以使用案例陈述:
select id, name, case when status = 0 then 'Prospect'
when status = 1 then 'Active'
when status = 2 then 'Existing'
...
else null -- can be omitted if null is the desired default, or change the null to the output required
end status
from customer;
答案 2 :(得分:1)
除了其他答案之外,如果要在数据库中存储Enum常量的字符串值,请使用此映射
@Enumerated(value=EnumType.STRING)
private MyEnum myEnum;