以下语句是否可以转换为decode函数:case when subjcode like '6601%' or subjcode like '6602%' or subjcode like '6603%' then subjcode else 'N/A' end

解决方案 »

  1.   

    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')
      

  2.   

    这个不能 decode值针对具体的值
      

  3.   

    -- 你的语句:
    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')
      

  4.   

    不过 可以在里面 嵌套substr 转行么
      

  5.   

    一般来说case when的应用范围更广泛
      

  6.   

    群里看到 就回下
    decode(regexp_instr(subjcode,'^[6601|6602|6603]')-1,0,subjcode,-1,'N/A')
      

  7.   


    修正decode(regexp_instr('67010a','^660[1|2|3]')-1,0,subjcode,-1,'N/A')
      

  8.   

    decode(regexp_instr(subjcode,'^660[1|2|3]')-1,0,subjcode,-1,'N/A')
      

  9.   

    不可以,decode只能针对固定的…