你试试case  讲道理应该可以的

解决方案 »

  1.   

    不是decode不正常,或许是sql dev 这个工具不正常。
    把语句拿到sqlplus下看是否正确。
      

  2.   

    你把 DECODE 这一表达式,放在 select 后面,看看是什么结果 ;估计bumen 这列有空格,或其他字符;
      

  3.   

    case正常输出,这是为什么呢
      

  4.   

    不应该啊   简单case 函数和 decode 达到的效果差不多 
      

  5.   


    我看了,试了啊。昨天回复的,不过这里有限制,不能连续回复超过三个。就发不出来 了。放在后面发现这DECODE这函数把部门都转换为NULL了。并没有转换为数字123
      

  6.   

    跟decode没有半毛钱关系,
    记录查询结果行的顺序跟你排序有关,没有排序的话,一般是数据插入的先后顺序,
    加上 order by deptno 
      

  7.   

    我有ORDER BY 啊,想按自字义的顺序才DECODE。
      

  8.   


    估计bumen 这列有空格,或其他字符;
    select dump(bumen) from t , 看看这个列的内容是什么;
      

  9.   


    SELECT a.*
      FROM (SELECT 1 deptno,
                   '开发部' bumen
              FROM dual
            UNION
            SELECT 2 deptno,
                   '销售部' bumen
              FROM dual
            UNION
            SELECT 6 deptno,
                   '技术部' bumen
              FROM dual
            UNION
            SELECT 4 deptno,
                   '事业部' bumen
              FROM dual
            UNION
            SELECT 5 deptno,
                   '人事部' bumen
              FROM dual
            UNION
            SELECT 3 deptno,
                   '行政部' bumen
              FROM dual) a
     ORDER BY decode(bumen, '人事部', 1, '技术部', 2, '行政部', 3, '销售部', 4, '开发部', 5, '事业部', 6)
      

  10.   

    问下,(SELECT 1 deptno,
                   '开发部' bumen
              FROM dual是什么意思呢
      

  11.   


    估计bumen 这列有空格,或其他字符;
    select dump(bumen) from t , 看看这个列的内容是什么;
    输出的是一串串数字啊
    Typ=96 Len=20: 229,188,128,229,143,145,233,131,168,32,32,32,32,32,32,32,32,32,32,32
      

  12.   

    输出的是一串串数字啊
    Typ=96 Len=20: 229,188,128,229,143,145,233,131,168,32,32,32,32,32,32,32,32,32,32,32
    就是这个结果;显然 “开发部” 后面,还有 11 个空格,每一个 32,就是一个空格;你这个字段的类型是什么  ?char 类型吗 ? 
      

  13.   

    不知道了,应该 是varchar2。.我电脑卡了,刚重装系统了。等我把数据库再装上试试。
      

  14.   

    刚试了,用varchar2型正常,用char的不正常。这是为什么呢?
      

  15.   

    varchar2自动去空格  也就是那个 CHR(32),char型就不会自动去除
      

  16.   

    刚试了,用varchar2型正常,用char的不正常。这是为什么呢?char(30),如果只写了 10 个字符,后面 20 个,会用空格填充。如果非要用建议用 trim 去掉这些讨厌的空格吧;