请教一个Oracle中使用CASE将数字转成中文的问题

小弟初学Oracle,现在在做一张报表的查询时希望将其中的一个数字列通过CASE...WHEN语句转换成中文。

小弟随手写了个类似的例子,如下:

 SELECT VAL, CASE A.VAL WHEN 0 THEN '总成绩' WHEN 1 THEN '语文成绩' WHEN 2 THEN '数学成绩' WHEN 3 THEN '英语成绩' ELSE '' END AS VNAME
FROM
  (SELECT 0 AS VAL FROM DUAL
   UNION ALL
   SELECT 1 AS VAL FROM DUAL
   UNION ALL
   SELECT 2 AS VAL FROM DUAL
   UNION ALL
   SELECT 3 AS VAL FROM DUAL) A

但是得到的结果通过PL/SQL查看发现中文显示不全,大致示意如下:

VAL VNAME

0 总成
1 语文
2 数学
3 英语

请问诸位高手如何解决类似的问题?不胜感激

case when panel.grade='P' then 1 else 0 end 这是我的写法,可以使用

对同一个列做判断 可以考虑用decode函数

select
VAL,
decode(A.VAL,0,'总成绩',1,'语文成绩',2,'数学成绩',3,'英语成绩','') as VNAME
from (
SELECT 0 AS VAL FROM DUAL
UNION ALL
SELECT 1 AS VAL FROM DUAL
UNION ALL
SELECT 2 AS VAL FROM DUAL
UNION ALL
SELECT 3 AS VAL FROM DUAL

)A

图片说明

图片说明

我用你的SQL查中文都有显示出来啊