修改Oracle Sql查询返回的结果的内容

时间:2015-01-26 09:59:18

标签: java sql database oracle hibernate

我们的一位客户要求提供有关客户的信息。

我已经编写了下面的查询,以提取客户列表。

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

3 个答案:

答案 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;