SQL查询中出现null问题?

时间:2011-03-31 11:44:28

标签: sql oracle null

select 
    case 
       when ''!='abcd'
           then 'nodate'
       else 'date'
    end;

我希望''代表null,但是当我执行此查询时,我将'date'作为输出,而不是'nodate'。这个查询有什么问题?为什么''!='abcd'条件检查成为现实?

4 个答案:

答案 0 :(得分:2)

在看了这个答案的评论后,这里是解释 -

在您的示例中,''在Oracle中被视为NULL,因此'' != 'abcd'被评估为UNKNOWN,这就是返回'else子句'结果的原因(而不是'when子句'结果)。

如果您想查看NULL的某些列,请明确提及它。

...case when columnName is NULL then ... else ... end

或者如果您要检查某些列值为'abcd',请使用 -

...case when columnName != 'abcd' then ... else ... end

答案 1 :(得分:1)

如果要检查NULL,请尝试以下操作:

value IS NULL

因此,如果您想将''替换为NULL,请不要放置NULL != 'abcd',但是:

'abcd' IS NOT NULL


如果有变量而不是'',请尝试:

IF (l_variable != 'abcd) or (l_variable IS NULL)

然而,发布完整的代码而不是修改后的部分会更好。

答案 2 :(得分:0)

使用NULL来检查值是否为NULL,另请参阅http://www.dba-oracle.com/t_case_statement_else_null_value.htm

答案 3 :(得分:0)

我认为你想要的是

当YourColumn为null然后'nodate'时,'yes date'结束