SQL 查询中出现 null 问题?

发布于 2024-10-28 18:23:44 字数 273 浏览 2 评论 0原文

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

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

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

Here I hope '' stand for null, but when I execute this query I am getting 'date' as an ouput, rather than 'nodate'. What is the problem in this query? Why does ''!='abcd' condition checking become true?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

迷鸟归林 2024-11-04 18:23:44

查看此答案的评论后,以下是解释 -

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

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

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

或者如果您要检查某些列值是否为 'abcd' 则使用 -

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

After looking at comments for this answer, here is the explaination -

In your example, '' is considered as NULL in Oracle and hence '' != 'abcd' is evaluated to UNKNOWN, which is the reason the 'else clause' result is returned (and not the 'when clause' result).

If you want to check some column for NULL explicitly mention it.

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

or if you are checking for some column value to be 'abcd' then use -

...case when columnName != 'abcd' then ... else ... end
就此别过 2024-11-04 18:23:44

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

value IS NULL

因此,如果您想用 NULL 替换 '',请不要输入NULL != 'abcd' 但是:

'abcd' IS NOT NULL


如果那里有一个变量而不是'',请尝试:

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

它会不过,最好发布完整的代码,而不是其中修改的部分。

If you want check for NULL, try this:

value IS NULL

So, if you want to replace '' with NULL, don't put NULL != 'abcd' but:

'abcd' IS NOT NULL


if there is a variable there and not '', try:

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

It would be better however, to post complete code and not a modified part of it.

信仰 2024-11-04 18:23:44

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

use NULL to check if the value is NULL, also see http://www.dba-oracle.com/t_case_statement_else_null_value.htm

古镇旧梦 2024-11-04 18:23:44

我认为你想要的是

当 YourColumn 为 null 然后 'nodate' else 'yes date' end 的情况

I think what you want is

case when YourColumn is null then 'nodate' else 'yes date' end

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文