title: Default value for char/varchar in SQL column: space(1) or empty string?
body: <p>I usually can find answers to my questions in SO, but I can't find information on this topic (may be I'm making the wrong question). </p>
  
  <p>Background: six years ago some developer upsized a Visual FoxPro data base to SQL Server 2005 (tables structure and data). The process introduced various bugs that now I'm trying to fix in order to improve the data structure and performance (changing TEXT to VARCHAR(MAX), some Floats to DECIMAL, dropping unused columns...)</p>
  
  <p>My previous task was: to find all <em>Default Constraints</em> assigned to all columns in all tables for which the corresponding default object didn't exist in <code>sys.default_constraints</code> and fix them assigning an empty string to <code>char</code>/<code>varchar</code>, <code>0</code> to <code>Decimal</code>, etc... (more than 30% of columns where broken... yes I know -_- wtf!. My script worked smoothly, so far so good. </p>
  
  <p>Just for fun I executed <code>SP_HELP</code> in one of those tables to verify the fixed columns, but noticed that the <code>char</code> columns I didn't change had a default value of <code>(space((1)))</code>, instead of the plain empty string <code>''</code> I was using.</p>
  
  <p><strong>My question is</strong>: Should I leave those columns intact with the default value <code>(space((1)))</code>?  or should I change it to <code>''</code> (changing the script to do that would be really easy)? </p>
  
  <p>My bet is that I should change it (calling a function on every insert can't be free), but wanted to ask to be sure first.</p>
  
  <p>PD: I'm not a DBA, but a developer who has to use the DBA hat now and then.  </p>