2014-01-07 30 views
0

我花了数小时试图弄清楚这一点,但不断发生错误!SELECT DECODE语句:更改空值和非空值

基本上我想保留所有的字段值,除了改变空值和'0'值。我想将“0”更改为“不收费”,并将所有空值更改为“不适用”。

我想出最接近的是

SELECT DECODE(NVL(TO_CHAR(PL.oper),'No'),'0','No Charge','No','Not Applicable',PL.oper) 

没有错误出现,当我使用此代码。 0全部更改为“不收费”,但由于某些原因,空值保持不变。 由于我的要求非常具体,我无法在此网站或Google上找到类似的内容。如果有人可以帮助我,我会很感激!

谢谢

+0

尝试没有NVL功能,bcoz解码函数将2个空值相等。 –

+0

你是什么意思? (对不起,我是一个SQL初学者)。我想将空值标记为“不适用”,因此我不知道如何使用NVL函数更改空值。 – user3167712

回答

0

无论如何在这种情况下试试这个case-statement。

SELECT id, 
     field, 
     CASE NVL(field, 'No') 
     WHEN '0' THEN 'No Charge' 
     WHEN 'No' THEN 'Not applicable' 
     ELSE 'catch all result do this' 
     END 
FROM xx_test 

link

+0

我将如何格式化ELSE以保持所有其他内容? “ELSE PL.oper”? id.field? – user3167712