Oracle DB视图将列数值显示为文本相对值

时间:2014-04-30 16:29:53

标签: sql database oracle view

问题的主题可能与我的怀疑不相关。

我正在尝试创建一个从Db表中读取值的视图,其中列中的一个值为1,2,3,实际上表示1 =请求,2 =响应,3 =错误。

我将使用此视图进行报告,因此在报告中我不想显示数字值,取而代之的是,我应该得到请求,响应或错误。

你能帮我解决一下如何创建一个视图吗?

提前感谢,因为我对数据库查询不是很熟悉。

1 个答案:

答案 0 :(得分:2)

以下是使用CASE语句的示例。

WITH test_data
     AS (SELECT 1 v1 FROM DUAL
         UNION
         SELECT 2 v1 FROM DUAL
         UNION
         SELECT 3 v1 FROM DUAL)
SELECT CASE v1
          WHEN 1 THEN 'request'
          WHEN 2 THEN 'response'
          WHEN 3 THEN 'error'
       END
  FROM test_data

所以视图看起来像:

CREATE VIEW MyView AS
 SELECT CASE v1
              WHEN 1 THEN 'request'
              WHEN 2 THEN 'response'
              WHEN 3 THEN 'error'
           END
      FROM test_data;  -- etc.

但是,我认为应该创建一个单独的查找/连接表来映射内部值和用户值,而不是这种方法。当您需要为代码#4等添加案例时会发生什么?您不希望每次都修改您的查询。长远思考。