做A表的视图
A表中有一个项目是varchar2的数据,想在视图中作出这样的效果,就是如果这个项目的数据是'1',那么视图中对应的项目就是'0',如果A中的数据是'2',视图中就是'1'。目前我想出来的方法就是先将数据TO_NUMBER之后减去1,然后在变回varchar2,但是如果下次要求变成'a','b'之类的,我的这个方法就不好用了,所以请教各位Oracle的大侠有没有更好的实现方法?

解决方案 »

  1.   

    decode(字段,'1','0','2','1','非1和2的默认值')
      

  2.   

    1,case when A.column1='1' then '0'
            when A.column1='2' then '1'
       else '' end ;2,decode(A.column1, '1','0', '2','1', '');
      

  3.   

    楼上两位,楼主是非固定的数据,不过有规律
    如果有字母的话,其实可以考虑ASCII码来转
      

  4.   

    那如果数据有多位呢?比如是'1111',变成'0000'?
    反正不管如何,应该可以用ascii()和chr()函数吧象这样
     
    SQL> SELECT chr(ASCII('A')+1) FROM dual;
     
    CHR(ASCII('A')+1)
    -----------------
    B
      

  5.   

    如果有规律的话,可以考虑是用正则表达式:regexp_replace很好用的!有问题大家交流一下!
      

  6.   

    谢谢楼上的各位大侠给出来的解决方法,目前用decode的方法解决了问题。