 <p>The error is being returned because the conditions being evaluated are not short-circuiting - the condition <code>PostalCode&lt;7000</code> is being evaluated even where the postal code is non-numeric.</p> <p>Instead, try:</p> <pre><code>SELECT * from Person.Address WHERE CASE WHEN PostalCode NOT LIKE '%[^0-9]%' THEN CAST(PostalCode AS NUMERIC) ELSE CAST(NULL AS NUMERIC) END &lt;7000 </code></pre> <p>(Updated following comments)</p>