PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо PostgreSQL не връща нулеви стойности, когато условието е <> вярно

Всеки наполовина приличната RDBMS го прави по същия начин, защото еправилно .
Цитирам ръководството на Postgres тук:

Обикновените оператори за сравнение дават null (означаващи "неизвестно"), nottrue или false, когато всеки от входните данни е нулев. Например, 7 = NULL yieldsnull, както и 7 <> NULL . Когато това поведение не е подходящо, използвайте IS [ NOT ] DISTINCT FROM конструкции:

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Обърнете внимание, че тези изрази се изпълняват малко по-бавно от простия expression <> expression сравнение.

За boolean стойности има и по-простият IS NOT [TRUE | FALSE] .
За да получите това, което очаквате във втората си заявка, напишете:

SELECT * FROM table WHERE avalue IS NOT TRUE;

SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. не може да създаде разширение без роля на суперпотребител

  2. Вземете деня от дата в PostgreSQL

  3. Тествайте за нула във функция с различни параметри

  4. Комбиниране на изрази INSERT в CTE за модифициране на данни с израз CASE

  5. Инсталации на postgresql с един екземпляр