title: Why does PostgreSQL not return null values when the condition is <> true
body: <p>I was confused behind the reasoning of the following:</p>
  
  <pre><code>SELECT * FROM table WHERE avalue is null
  </code></pre>
  
  <p>Returns x number of rows where 'avalue' is null</p>
  
  <pre><code>SELECT * FROM table WHERE avalue &lt;&gt; true
  </code></pre>
  
  <p>Does <strong>not</strong> return rows where 'avalue' is null. </p>
  
  <p>My reasoning (which appears to be incorrect) is that as <code>null</code> is a unique value (it isn't even equal to <code>null</code>) means that it should show in the result set as it isn't equal to <code>true</code> either. </p>
  
  <p>I guess you could argue that by saying <code>column &lt;&gt; value</code> you imply that the column has a value therefore ignoring the <code>null</code> values altogether.</p>
  
  <p>What is the reasoning behind this and is this the same in other common SQL DB's? </p>
  
  <p>My reasoning (assumption) is telling me this is counter-intuitive and I wanted to learn why.</p>