楼主: yonggangma

请教有关DECODE的问题

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
21#
发表于 2002-3-21 04:55 | 只看该作者
我问的是case的多条件分支如何实现

使用道具 举报

回复
论坛徽章:
63
版主7段
日期:2012-05-15 15:24:11itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-10 14:34:59马上加薪
日期:2015-01-08 15:39:192015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
22#
发表于 2002-3-26 00:05 | 只看该作者

Re: 如果不是日期或者数字

biti_rainy提的这个问题,还没有解决?

最初由 biti_rainy 发布
[B]是字符串怎解?
呵呵 [/B]

使用道具 举报

回复
论坛徽章:
25
ITPUB元老
日期:2005-02-28 12:57:00管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
23#
发表于 2002-3-27 05:40 | 只看该作者

抱歉这些天没看

字符串比较麻烦, 因为它不仅存在长短问题而且还存在汉字(多字节)问题
思想还是转化成数字处理,  有两个方法, 一个是自己写一个函数, 另一个是用dump()
自己写函数, 比较简明, 原来我就用过类似方法, 当然是需求中经常有这样的不定排序要求才有意义
用dump() 很罗嗦, 而且涉及到字符集问题, 我不敢保证是完全正确的, 我们可以再讨论:

select * from tablename
order by decode(mode,'FIFO',1,-1)*rpad(replace(replace(replace(substr(dump(to_multi_byte(job),10),
instr(dump(to_multi_byte(job),10),':')+1),
'NULL'),' '),','),9999,'0')
/

使用道具 举报

回复
论坛徽章:
63
版主7段
日期:2012-05-15 15:24:11itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-10 14:34:59马上加薪
日期:2015-01-08 15:39:192015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
24#
发表于 2002-3-27 05:46 | 只看该作者

Re: 抱歉这些天没看

厉害,学习一下!
easyfree兄出马,一个顶俩!
最初由 easyfree 发布
[B]字符串比较麻烦, 因为它不仅存在长短问题而且还存在汉字(多字节)问题
思想还是转化成数字处理,  有两个方法, 一个是自己写一个函数, 另一个是用dump()
自己写函数, 比较简明, 原来我就用过类似方法, 当然是需求中经常有这样的不定排序要求才有意义
用dump() 很罗嗦, 而且涉及到字符集问题, 我不敢保证是完全正确的, 我们可以再讨论:

select * from tablename
order by decode(mode,'FIFO',1,-1)*rpad(replace(replace(replace(substr(dump(to_multi_byte(job),10),
instr(dump(to_multi_byte(job),10),':')+1),
'NULL'),' '),','),9999,'0')
/ [/B]

使用道具 举报

回复
论坛徽章:
63
版主7段
日期:2012-05-15 15:24:11itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-10 14:34:59马上加薪
日期:2015-01-08 15:39:192015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
25#
发表于 2002-3-27 05:47 | 只看该作者
一个新问题:
oracle中的字符比较的内在原理的什么?

使用道具 举报

回复
论坛徽章:
25
ITPUB元老
日期:2005-02-28 12:57:00管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
26#
发表于 2002-3-27 06:18 | 只看该作者

个人认为

它还是按照ascii码表的次序比较的, 至于多字节字符, 比如汉字, 是按照国标代码的次序比较的, 可以认为就是区位码中的次序, 但它是和各个国家规定的本国文字排列次序相关的

另外一个问题就是, 当数据库采用不同的字符集, 尤其是采用单字节字符集而又存储多字节字符的时候, 它的排列次序或许没有变化但ascii值是不同的, 没有什么规律

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
27#
发表于 2002-3-27 17:34 | 只看该作者

dump() 我一直没有找着合适的地方用

看来果然
free一个人就顶了咱们俩,还多  :)

使用道具 举报

回复
论坛徽章:
63
版主7段
日期:2012-05-15 15:24:11itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-10 14:34:59马上加薪
日期:2015-01-08 15:39:192015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
28#
发表于 2002-3-29 23:09 | 只看该作者
实在不行,就用动态过程实现算了(插到临时表里).

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
29#
发表于 2002-3-30 21:07 | 只看该作者

其实,mode 不同了可排序

select * from
(select 1 mode_type,
            code,
            amount,
            date
where mode = 'FIFO'
  order by dete asc
union all
select 2 mode_type,
            code,
            amount,
            date
where mode = 'LIFO'
  order by dete desc)
order by mode_type

这样就可以排序了

使用道具 举报

回复
论坛徽章:
63
版主7段
日期:2012-05-15 15:24:11itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-10 14:34:59马上加薪
日期:2015-01-08 15:39:192015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
30#
发表于 2002-3-31 05:50 | 只看该作者

Re: 其实,mode 不同了可排序

我在817上测试过,不行!
最初由 kanmi 发布
[B]select * from
(select 1 mode_type,
            code,
            amount,
            date
where mode = 'FIFO'
  order by dete asc
union all
select 2 mode_type,
            code,
            amount,
            date
where mode = 'LIFO'
  order by dete desc)
order by mode_type

这样就可以排序了 [/B]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表