Oracle DB 视图将列数值显示为文本相对值
Posted
技术标签:
【中文标题】Oracle DB 视图将列数值显示为文本相对值【英文标题】:Oracle DB view to display columns numeric value to text relative values 【发布时间】:2014-04-30 16:29:52 【问题描述】:问题的主题可能与我在这里的疑问无关。
我正在尝试创建一个从 Db 表中读取值的视图,其中在其中一列中我的值为 1、2、3,实际上代表 1=请求、2=响应和 3=错误。
我将使用此视图进行报告,因此在报告中我不想显示数字值,代替这些,我应该得到请求、响应或错误。
你能帮我如何创建一个视图来做到这一点..
提前感谢,因为我对数据库查询不太熟悉。
【问题讨论】:
CREATE VIEW blah AS SELECT CASE WHEN col=1 THEN 'request' WHEN col=2 THEN 'response' WHEN col=3 THEN 'error' END FROM table
您确定没有包含这些描述的表格吗?当这些值发生变化时,硬编码值和描述可能会很痛苦
谢谢,我正在尝试按照您的建议起草我的查询,但由于某种原因它无法正常工作。我还有一些其他列,我还需要与此列一起显示...但这些是正常的选择一个..您能否发布一个显示多个列以及上述请求查询的查询
【参考方案1】:
这是一个使用 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 等添加案例时会发生什么?您不想每次都修改查询。着眼长远。
【讨论】:
以上是关于Oracle DB 视图将列数值显示为文本相对值的主要内容,如果未能解决你的问题,请参考以下文章