为什么大多数(全部?)SQL 数据库给出:
SELECT FALSE < FALSE; -- FALSE / 0 Ok
SELECT TRUE < FALSE; -- FALSE / 0 Ok
SELECT NOT(FALSE) < FALSE; -- TRUE / 1 What?
SELECT NOT(TRUE) < FALSE; -- TRUE / 1 What??
只需仔细检查即可:
SELECT NOT(TRUE) = FALSE; -- TRUE / 1 Ok
SELECT NOT(FALSE) = TRUE; -- TRUE / 1 Ok
在 Postgres 中,我还可以检查:
SELECT pg_typeof(TRUE), pg_typeof(NOT(FALSE));
-- boolean | boolean
我已经在 PostgreSQL、SQLite3 和 MariaDB 上尝试过这一点,并且都同意相同的意外结果。
我缺少什么?