case when 转化为 decode 高手解答??!!

gzd03 2011-03-10 03:06:16

以下语句是否可以转换为decode函数:

case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end
...全文
168 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
njlywy 2011-03-10
  • 打赏
  • 举报
回复
不可以,decode只能针对固定的…
心中的彩虹 2011-03-10
  • 打赏
  • 举报
回复
decode(regexp_instr(subjcode,'^660[1|2|3]')-1,0,subjcode,-1,'N/A')
心中的彩虹 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wkc168 的回复:]
引用楼主 gzd03 的回复:
以下语句是否可以转换为decode函数:


SQL code
case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end

群里看到 就回下


decode(regexp_instr……
[/Quote]

修正

decode(regexp_instr('67010a','^660[1|2|3]')-1,0,subjcode,-1,'N/A')
心中的彩虹 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 gzd03 的回复:]
以下语句是否可以转换为decode函数:


SQL code
case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end
[/Quote]
群里看到 就回下


decode(regexp_instr(subjcode,'^[6601|6602|6603]')-1,0,subjcode,-1,'N/A')
QKForex 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luoyoumou 的回复:]
SQL code
-- 你的语句:
case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end

-- 要用decode的话,也只能借助substr()函数,这样写:
decode( substr(subjcode,1,4),'……
[/Quote]

恩,可以嵌套substr
justacoat 2011-03-10
  • 打赏
  • 举报
回复
一般来说case when的应用范围更广泛
lzbbob1985 2011-03-10
  • 打赏
  • 举报
回复
额 后面才看到老罗用嵌套了
lzbbob1985 2011-03-10
  • 打赏
  • 举报
回复
不过 可以在里面 嵌套substr 转行么
luoyoumou 2011-03-10
  • 打赏
  • 举报
回复
-- 你的语句:
case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end

-- 要用decode的话,也只能借助substr()函数,这样写:
decode( substr(subjcode,1,4),'6601',subjcode,'6602',subjcode,'6603', subjcode, 'N/A')
  • 打赏
  • 举报
回复
[Quote=引用楼主 gzd03 的回复:]
以下语句是否可以转换为decode函数:


SQL code
case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end
[/Quote]
这个不能 decode值针对具体的值
luoyoumou 2011-03-10
  • 打赏
  • 举报
回复
decode()只能用于某一确定值,不能用于范围域值!

-- 如:
(case when col_name=1 then 'OK' when col_name=2 then 'Faild' else 'Un Now' end)

-- 可以替换为:
decode(col_name,1,'OK',2,'Faild','Un Now')
luoyoumou 2011-03-10
  • 打赏
  • 举报
回复
-- 不能!

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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