title: LNNVL to replace NOT IN?
body: <p>This one was a bit difficult to search, so I'm asking here (where I saw questions regarding <code>lnnvl()</code>).</p>
  <p>I have a query that looks like:</p>
  <pre><code>SELECT *
  FROM foo
  WHERE foo.bar NOT IN ('X', 'Y')
     OR foo.bar IS NULL;
  </code></pre>
  <p>Moments ago I learned about <code>lnnvl()</code> and I was able to do the same thing with:</p>
  <pre><code>SELECT *
  FROM foo
  WHERE lnnvl(foo.bar = 'X')
    AND lnnvl(foo.bar = 'Y');
  </code></pre>
  <p>That is fantastic, but not very scalable when checking a larger set. Is there a cleaner way that any of you folks know of? In the past, I've done something like:</p>
  <pre><code>SELECT *
  FROM foo
  WHERE nvl(foo.bar, ' ') NOT IN ('X', 'Y')
  </code></pre>
  <p>I appreciate any insights!</p>