Por que a maioria (todos?) Os bancos de dados SQL fornecem:
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??
E apenas verifique novamente:
SELECT NOT(TRUE) = FALSE; -- TRUE / 1 Ok
SELECT NOT(FALSE) = TRUE; -- TRUE / 1 Ok
No Postgres, também posso verificar:
SELECT pg_typeof(TRUE), pg_typeof(NOT(FALSE));
-- boolean | boolean
Eu tentei isso com PostgreSQL, SQLite3 e MariaDB, e todos concordam com o mesmo resultado inesperado.
o que estou perdendo?