- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了很多关于NOT NULL 与 <>'' 之间的区别
我找到的最好的解释是:
https://www.postgresql.org/message-id/AANLkTilEsUTIeUkZCX9Vc14kciFiuvFBRRE-yen4K_Zi@mail.gmail.com其中指出:
NULL means the question hasn't been answered yet, thus there is no answer, there may be an answer once it is provided so you can't really say the answer is empty. Empty would mean the answer has been given and the answer is empty.
对于我正在处理的表,我试图过滤仅有效邮政编码的结果(邮政编码是这个特定表中的 VARCHAR),我尝试了以下操作:
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL OR postcode <> '';
但是,这会在我的结果中提供一些空白的邮政编码。打破这个......
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL;
给出一些空白的邮政编码而
SELECT postcode FROM customer_table_1
WHERE postcode <>'';
只在结果中给出有效的邮政编码。因此,查询的 IS NOT NULL 部分没有按照我的想法进行。
作为更复杂查询的一部分,我以前使用过:
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL AND postcode <> '';
并取得了预期的效果。不过我一直觉得应该是
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL OR postcode <> '';
因为我要查找具有有效邮政编码(即不是 NULL 或非空字符串)的所有记录,所以这些记录不应与 OR 语句而不是 AND 连接吗?我不是在寻找既是 NULL 又是空字符串的邮政编码,只是其中之一。
抱歉,如果这是一个愚蠢的问题,使用 AND 对我来说似乎不合逻辑,我不想在不了解结果背后的过程的情况下盲目地做某事。我以为我完全理解 NOT NULL 和 <>'' 之间的区别,但是对于与 Postgres 相关的大多数事情,我越深入研究它就越意识到我实际上并不知道!
最佳答案
了解 De Morgan's Law 会让您受益匪浅这是 bool 逻辑的基础。
在这种情况下,您的情况不是您所表达的那样:
(NOT NULL) OR (NOT EMPTY)
但实际上是:
NOT (NULL OR EMPTY)
根据 De Morgan 展开实际上变成了:
(NOT NULL) AND (NOT EMPTY)
这就是为什么 AND
是正确的(实际上是“合乎逻辑的”)运算符。
关于Postgresql NOT NULL AND <> '' 与 NOT NULL OR <> '',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829018/
我是一名优秀的程序员,十分优秀!