title: Why does the SQL 'select 1 from dual where 0=null;' pass in the oracle
body: <p>I type the following SQL in the ORACLE and it passed:</p>
  
  <pre class="lang-sql prettyprint-override"><code>select 1 from dual where 0=null; 
  </code></pre>
  
  <p>Why did the SQL pass and it seems strange without compilation error. Moreover , if the null is a varchar2 column in the table, it will also pass.</p>
  
  <pre class="lang-sql prettyprint-override"><code>create table test
  (
    a varchar2(100),
    b varchar2(100)
  )
  
  insert into test(a,b) VALUES (null, 'abc');
  commit;
  
  select * from test where a=0
  </code></pre>
  
  <p><strong>Update:</strong></p>
  
  <p>Because the column 'a' is the varchar2 type and 0 is a number type, if the a doesn't contain null, it will report the error.</p>
  
  <pre class="lang-sql prettyprint-override"><code>create table test
  (
    a varchar2(100),
    b varchar2(100)
  )
  
  insert into test(a,b) VALUES ('abc', 'abc');
  commit;
  
  
  select * from test where a=0
  
  --ORA-01722 "invalid number"
  </code></pre>
  
  <p>Thank you.</p>