22

There is an excellent SO on MySQL empty strings versus NULL here, MySQL, better to insert NULL or empty string?, however it doesn't take in to account 'uniformity' - i.e. if you want to have just one choice in your tables (i.e. empty string OR NULL), which should it be?

My question is, can I get MySQL to automatically store empty strings as NULLs?

After reading the previous SO I am generally inclined to store NULL but the problem is that I have a lot of PHP forms with optional fields, and (when left blank) these return empty strings.

dreftymac
  • 31,404
  • 26
  • 119
  • 182
DatsunBing
  • 8,684
  • 17
  • 87
  • 172

2 Answers2

45

You can enclose your strings with NULLIF()

You use it like this:

NULLIF('test','') --> returns 'test'
NULLIF(''    ,'') --> returns NULL
Wouter van Nifterick
  • 23,603
  • 7
  • 78
  • 122
2

Alternatively to NULLIF you could set the default to NULL and just not pass empty fields along.

m02ph3u5
  • 3,022
  • 7
  • 38
  • 51