oracle 数据库替换 “01,02,03”成 “香蕉,苹果,橘子”

图片说明
查询数据直接显示出来
select p.kaitywdm from pingtzl p 查询的时候直接在数据库中显示出来,变成汉字

后台查到kaitywdm 然后split(",")切割,遍历数组判断是01,02,03的然后将其改成香蕉,苹果,橘子,

public static void main(String[] args) {
List list = new ArrayList();
String str = "01,02,03,04,05";//kaitywdm
String[] split = str.split(",");
for (int i = 0; i < split.length; i++) {
String string = split[i];
if(string.equals("01")){
string="香蕉";
}
if(string.equals("02")){
string="苹果";
}
if(string.equals("03")){
string="橘子";
}
list.add(string);

    }
    System.out.println("str:"+str);
    System.out.println("newStr:"+list.toString().substring(1,list.toString().length()-1));
}

执行结果:
str:01,02,03,04,05
newStr:香蕉, 苹果, 橘子, 04, 05

在后台处理数据更方便啊,为什么要在数据库查询的时候就替换显示

 数据不多的话就replace了 


with a(var_id,
var_dm) as
 (select 1, '01,02,03,04' from dual)
select var_id,
       replace(replace(replace(var_dm, '01', '香蕉'), '02', '苹果'),
               '03',
               '橘子')
  from a

有一个笨办法,好像找不到更好的了,
select replace(replace(kaitywdm,'01','香蕉'),'02','苹果') from pingtzl;

用replace解决

你的意思是01,02,03分别对应香蕉,苹果,橘子的话就可以用:
select replace(replace(replace(kaitywdm,'01','香蕉'),'02','苹果'),'03','橘子') from pingtzl;

如果是01,02,03整体对应香蕉,苹果,橘子的话可以用:
select replace(kaitywdm,'01,02,03','香蕉,苹果,橘子') from pingtzl;

另外用translate函数也可以