oracle,decode函数输出为什么不正常

qq_36665460 2017-05-10 10:16:52
...全文
782 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36665460 2017-05-14
  • 打赏
  • 举报
回复
引用 18 楼 卖水果的net的回复:
输出的是一串串数字啊 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 类型吗 ?
刚试了,用varchar2型正常,用char的不正常。这是为什么呢?
碧水幽幽泉 2017-05-14
  • 打赏
  • 举报
回复
卖水果的net 2017-05-14
  • 打赏
  • 举报
回复
引用 21 楼 qq_36665460 的回复:
[quote=引用 18 楼 卖水果的net的回复:]输出的是一串串数字啊 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 类型吗 ?
刚试了,用varchar2型正常,用char的不正常。这是为什么呢?[/quote] char(30),如果只写了 10 个字符,后面 20 个,会用空格填充。如果非要用建议用 trim 去掉这些讨厌的空格吧;
  • 打赏
  • 举报
回复
varchar2自动去空格 也就是那个 CHR(32),char型就不会自动去除
qq_36665460 2017-05-13
  • 打赏
  • 举报
回复
引用 18 楼 wmxcn2000 的回复:
输出的是一串串数字啊 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 类型吗 ?
不知道了,应该 是varchar2。.我电脑卡了,刚重装系统了。等我把数据库再装上试试。
qq_36665460 2017-05-12
  • 打赏
  • 举报
回复
引用 12 楼 binsweet 的回复:
跟decode没有半毛钱关系, 记录查询结果行的顺序跟你排序有关,没有排序的话,一般是数据插入的先后顺序, 加上 order by deptno
我有ORDER BY 啊,想按自字义的顺序才DECODE。
binsweet 2017-05-12
  • 打赏
  • 举报
回复
跟decode没有半毛钱关系, 记录查询结果行的顺序跟你排序有关,没有排序的话,一般是数据插入的先后顺序, 加上 order by deptno
qq_36665460 2017-05-12
  • 打赏
  • 举报
回复
引用 10 楼 wmxcn2000 的回复:
4# 我给你建议了,你不看,我就再贴一遍; [quote=引用 4 楼 wmxcn2000 的回复:] 你把 DECODE 这一表达式,放在 select 后面,看看是什么结果 ; 估计bumen 这列有空格,或其他字符;
[/quote] 我看了,试了啊。昨天回复的,不过这里有限制,不能连续回复超过三个。就发不出来 了。放在后面发现这DECODE这函数把部门都转换为NULL了。并没有转换为数字123
卖水果的net 2017-05-12
  • 打赏
  • 举报
回复
4# 我给你建议了,你不看,我就再贴一遍;
引用 4 楼 wmxcn2000 的回复:
你把 DECODE 这一表达式,放在 select 后面,看看是什么结果 ; 估计bumen 这列有空格,或其他字符;
  • 打赏
  • 举报
回复
引用 8 楼 qq_36665460 的回复:
case正常输出,这是为什么呢
不应该啊 简单case 函数和 decode 达到的效果差不多
卖水果的net 2017-05-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 类型吗 ?
qq_36665460 2017-05-12
  • 打赏
  • 举报
回复
引用 14 楼 wmxcn2000 的回复:
[quote=引用 11 楼 qq_36665460 的回复:] 我看了,试了啊。昨天回复的,不过这里有限制,不能连续回复超过三个。就发不出来 了。放在后面发现这DECODE这函数把部门都转换为NULL了。并没有转换为数字123
估计bumen 这列有空格,或其他字符; select dump(bumen) from t , 看看这个列的内容是什么;[/quote] 输出的是一串串数字啊 Typ=96 Len=20: 229,188,128,229,143,145,233,131,168,32,32,32,32,32,32,32,32,32,32,32
qq_36665460 2017-05-12
  • 打赏
  • 举报
回复
引用 15 楼 binsweet 的回复:

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)
问下,(SELECT 1 deptno, '开发部' bumen FROM dual是什么意思呢
binsweet 2017-05-12
  • 打赏
  • 举报
回复

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)
卖水果的net 2017-05-12
  • 打赏
  • 举报
回复
引用 11 楼 qq_36665460 的回复:
我看了,试了啊。昨天回复的,不过这里有限制,不能连续回复超过三个。就发不出来 了。放在后面发现这DECODE这函数把部门都转换为NULL了。并没有转换为数字123
估计bumen 这列有空格,或其他字符; select dump(bumen) from t , 看看这个列的内容是什么;
qq_36665460 2017-05-11
  • 打赏
  • 举报
回复
引用 2 楼 baidu_36457652 的回复:
你试试case 讲道理应该可以的
case正常输出,这是为什么呢
qq_36665460 2017-05-11
  • 打赏
  • 举报
回复
引用 5 楼 elfenro 的回复:
你在数字这里加引号,比如'1'
加了也没有什么改变,真奇怪,
qq_36665460 2017-05-11
  • 打赏
  • 举报
回复
引用 3 楼 jdsnhan 的回复:
不是decode不正常,或许是sql dev 这个工具不正常。 把语句拿到sqlplus下看是否正确。
结果是一样的。我发现输入的部门有重复的。但是改了之后 还是不能。
elfenro 2017-05-11
  • 打赏
  • 举报
回复
你在数字这里加引号,比如'1'
卖水果的net 2017-05-11
  • 打赏
  • 举报
回复
你把 DECODE 这一表达式,放在 select 后面,看看是什么结果 ; 估计bumen 这列有空格,或其他字符;
加载更多回复(3)

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧