where子句

时间:2017-10-30 17:55:38

标签: oracle

我有一个列field_name和列另一个名字是数据 如果列名是Oracle并且Data coulmn为Null,我不希望在查询中返回。

我尝试了这个并且它不起作用

AND field_name = Case When field_name= 'Oracle' And Data IS Null
 field_name <> 'Oracle'
Else field_name
End

4 个答案:

答案 0 :(得分:1)

使用类似的东西。

AND   1 = (
    CASE
        WHEN field_name = 'Oracle'
             AND   data IS NULL THEN 0
        ELSE 1
    END
);

答案 1 :(得分:0)

您不需要案例陈述,只需:

AND NOT (field_name = 'Oracle' AND data is null)

你可以用一个案例陈述来做,但这有点奇怪。您希望第一个案例始终评估为false,因此您需要在THEN之后的部分不能等于field_name。在这种情况下,我在字符串的开头添加了一些字母(“not”),这些字母不能等于原始字符串。

AND field_name = Case When field_name= 'Oracle' And Data IS Null
  THEN 'not' || field_name
  Else field_name
  End

答案 2 :(得分:0)

您的陈述缺少THEN条款且field_name <> 'Oracle'无效:

AND field_name = CASE
                 WHEN field_name = 'Oracle' AND Data IS NULL
                 THEN 'FALSE'
                 ELSE field_name
                 End

可以简化为:

AND ( field_name <> 'Oracle' OR ( Data IS NOT NULL AND field_name IS NOT NULL ) )

答案 3 :(得分:-1)

以下是您可以使用的查询。

{{1}}