Использование Decode как подобное утверждение в Oracle - PullRequest
2 голосов
/ 10 декабря 2010

Мне нужно написать SQL-выражение вроде этого:

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

 FROM mapchile.segmento

, но в этом случае я получу 'a', когда id_segmento равен '1', мне нужно, чтобы оно было 'a'даже когда строка id_Segmento содержит '1', что-то вроде и как оценка.

Есть ли какая-либо другая команда, такая как Decode, которая работает таким образом?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 10 декабря 2010

Я бы использовал заявление о кейсе.Что-то вроде

case
   when id_segmento like '%1%' then 'a'
   else 'b'
end
5 голосов
/ 10 декабря 2010

Используйте оператор CASE для комплексной оценки вместо функции DECODE:

SELECT id_segmento AS Segmento, 
       CASE
          WHEN id_segmento LIKE '%1%' THEN 
            'a'
          ELSE
            'b'
       END
  FROM mapchile.segmento
3 голосов
/ 10 декабря 2010

, если вы не хотите использовать case, вы все равно можете использовать decode и instr:

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