Handling Null Values in WHERE clauses

Home » SQL and Databases » Handling Null Values in WHERE clauses
Photograph of a SSD Drive Array

I was speaking with one of the people I am mentoring at the moment, and he turned round and said “You are clever, you always know the answer, even if you have to work it out”, to which I replied “I’m not clever, I’m just old and I know to keep up”.

This was in response to what I thought was something quite simple, that I thought all SQL developers knew, so I thought I’d share it with you.

We were working on a SQL/Server stored procedure with a T-SQL merge statement to populate certain fields in a temp table:

The problem is that SessionStaffID and also SessionTime could contain null values. If one side of the equals contained a null value then this would cause the row not to be selected.

The solution was to use ISNULL (although care should be taken because putting a function on the left hand side of an equals would not allow SQL/Server to use an index). You simply choose a value that is not in the data to put as the second parameter to ISNULL like so:

This pattern also works on ordinary WHERE clauses as well, although as I said its important to use it carefully as putting functions on the left hand side of equals does not allow SQL/Server to use an index.

(Please accept my apologies if the above T-SQL is inconsistent in some way – I have changed the column and table names for privacy purposes. I hope it gets the point across though).

About Phil

I have been working as a software developer since 1983. This blog could have been called "From Fortran 77, C and Cobol to C# in 20 (not so) easy years", but it doesn't sound quite right somehow. Besides I'm talking about what's happened since 2003, not before!

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Top Posts & Pages


Recent Posts

Recent Comments



  • Mike Cohn's Blog
  • Scott Hanselman's Blog
- mike@mountaingoatsoftware.com

Too often, agile teams are expected to finish everything every iteration. This expectation is harmfu [...]

- mike@mountaingoatsoftware.com

When a product backlog becomes too big, it hinders agility. Discover four steps your team can take t [...]

- mike@mountaingoatsoftware.com

Pervasive myths about agile get in the way of success. It’s time to bust six of those myths. [...]

- mike@mountaingoatsoftware.com

Agile teams strive to finish work in the same iteration in which its begun. Here’s why that is so im [...]

- mike@mountaingoatsoftware.com

I wrote 25 blog posts during 2018. In case you missed some of them, here are the most popular. [...]

- Scott Hanselman

My Xbox user name is Glucose for a reason. This is a passion project of mine. You've likely see [...]

- Scott Hanselman

I've been really enjoying my Xbox lately (when the family is asleep) as well as some fun Retrog [...]

- Scott Hanselman

So you've been asked to parse some dates, except the years are two digit years. For example, da [...]

- Scott Hanselman

I've been working on a little idea where I'd have an app (maybe a mobile app with Xamarin [...]

- Scott Hanselman

"EditorConfig helps maintain consistent coding styles for multiple developers working on the sa [...]