NULL比较,取2

发布于 2024-09-24 14:16:50 字数 568 浏览 2 评论 0原文

我有一个子查询,在 WHERE 部分中使用:

A.column <> B.column

不幸的是,如果 A.column 或 B.column 为 NULL,则它不起作用。因此,我将其转换为:

((A.column <> B.column) OR ((A.column IS NULL) <> (B.column IS NULL)))

,假设“Table.column IS NULL”是布尔值,并且我可以比较 2 个布尔值。但...

“<”附近的语法不正确。

我不喜欢

((A.column <> B.column) OR ((A.column IS NULL) AND (B.column IS NOT NULL)) OR
((A.column IS NOT NULL) AND (B.column IS NULL)))

我该如何解决这个问题?

问候,

I have a subquery, used in WHERE section:

A.column <> B.column

Unfortunately, it doesn't work, if either A.column or B.column is NULL. So, I converted it to:

((A.column <> B.column) OR ((A.column IS NULL) <> (B.column IS NULL)))

, presuming that "Table.column IS NULL" is boolean value and I can compare 2 boolean values. But...

Incorrect syntax near '<'.

I don't like

((A.column <> B.column) OR ((A.column IS NULL) AND (B.column IS NOT NULL)) OR
((A.column IS NOT NULL) AND (B.column IS NULL)))

How could I workarounf this?

Regards,

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

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

发布评论

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

评论(4

终陌 2024-10-01 14:16:50

当两个值相等时 NULLIF 产生 null =)

WHERE NULLIF(A.column, B.column) IS NOT NULL

NULLIF yields null when two values are equal =)

WHERE NULLIF(A.column, B.column) IS NOT NULL
倒数 2024-10-01 14:16:50

使用 ISNULL 函数。

Use ISNULL function.

葬﹪忆之殇 2024-10-01 14:16:50
(ISNULL(A.column,0)) <> (ISNULL(B.column,0))
(ISNULL(A.column,0)) <> (ISNULL(B.column,0))
蘑菇王子 2024-10-01 14:16:50

在 MySQL 中,您可以使用

WHERE NOT(A <=> B) 

WHERE A <> 执行操作B 也适用于 null。

请参阅: http://dev.mysql.com /doc/refman/5.0/en/comparison-operators.html#operator_equal-to

In MySQL you can use

WHERE NOT(A <=> B) 

To do a WHERE A <> B that also works on null.

See: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal-to

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