在Oracle中使用Decode作为类似语句

时间:2010-12-10 14:56:41

标签: oracle decode sql-like

我需要编写一个这样的sql语句:

 SELECT id_segmento AS Segmento, Decode (id_segmento ,  '1' , 'a', 'b' )

 FROM mapchile.segmento

但是在这种情况下,当id_segmento等于'1'时,我将获得'a',即使字符串id_Segmento包含'1',我也需要它为'a',类似于类似的陈述。< / p>

还有像Decode这样的其他命令吗?

感谢。

3 个答案:

答案 0 :(得分:7)

我会使用案例陈述。像

这样的东西
case
   when id_segmento like '%1%' then 'a'
   else 'b'
end

答案 1 :(得分:5)

使用CASE运算符进行复杂评估,而不是使用DECODE函数:

SELECT id_segmento AS Segmento, 
       CASE
          WHEN id_segmento LIKE '%1%' THEN 
            'a'
          ELSE
            'b'
       END
  FROM mapchile.segmento

答案 2 :(得分:3)

如果您不想使用case,仍然可以使用decodeinstr

decode(instr(id_segmento,'1'),0,'b','a')

我假设你想在场上的任何地方匹配'1'。如果你想匹配以'1'开头的字段,那么你可以使用:

decode(ascii(id_segmento),49,'a','b')

decode(substring(id_segmento,1,1),'1','a','b')

decode(instr(id_segmento,'1'),1,'a','b')