使用通配符解码

时间:2014-09-19 09:22:32

标签: sql oracle decode

我尝试解码包含1.01 channel 12.04 channel 2等名称的列

为此,我首先仅根据第一个数字使用Decode。但是现在我需要进一步拆分通道2。

我试着用这个:

Decode(Substr(ch.sales_chain_desc,1,4), '1*', 'Channel 1', '2.01', 'Channel 2 a', '2.10', 'Channel 2 b', '2.02', 'Channel 2 c', 'Other')

然而它给出了错误的结果。是否应该使用任何其他字符而不是*(asterix)

1 个答案:

答案 0 :(得分:1)

在这个案例中使用case可能更好......

CASE 
  WHEN ch.sales_chain_desc LIKE '1%' THEN 'Channel 1'
  WHEN ch.sales_chain_desc = '2.01' THEN 'Channel 2 a'
  WHEN ch.sales_chain_desc = '2.10' THEN 'Channel 2 b'
  WHEN ch.sales_chain_desc = '2.02' THEN 'Channel 2 c'
  ELSE 'Other'
END