SELECT DECODE语句:同时更改空值和非空值

SELECT DECODE语句:同时更改空值和非空值,select,null,decode,Select,Null,Decode,我花了好几个小时试图弄明白这一点,但总是出错 基本上我想保留所有字段值,除了更改空值和“0”值。我想将“0”更改为免费,将所有空值更改为“不适用” 我想到的最接近的是 SELECT DECODE(NVL(TO_CHAR(PL.oper),'No'),'0','No Charge','No','Not Applicable',PL.oper) 使用此代码时不会出现错误。0全部更改为“免费”,但由于某些原因,空值保持不变。 因为我的要求非常具体,我在这个网站或谷歌上找不到类似的东西。如果有人能帮助

我花了好几个小时试图弄明白这一点,但总是出错

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

我想到的最接近的是

SELECT DECODE(NVL(TO_CHAR(PL.oper),'No'),'0','No Charge','No','Not Applicable',PL.oper)
使用此代码时不会出现错误。0全部更改为“免费”,但由于某些原因,空值保持不变。 因为我的要求非常具体,我在这个网站或谷歌上找不到类似的东西。如果有人能帮助我,我会非常感激


谢谢

无论如何,在这种情况下,请尝试使用案例陈述

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

在没有NVL函数的情况下尝试,bcoz解码函数将两个空值视为相等。你是什么意思?对不起,我是SQL初学者。我想将空值标记为不适用,因此我不知道如何使用NVL函数更改空值。我将如何格式化其他内容以保持其他内容不变?还有别的事吗?身份证字段?