People often confuse NULL with empty string, and it's a shame because NULL does have meaning.
It often helps to think of NULL as 'I don't know'.
For example, suppose you are storing names in a table, with the parts seperated, like this...
Create Table People
(FirstName VarChar(50),
MiddleName VarChar(50),
LastName VarChar(50))
We all know that some people don't have a middle name. It just doesn't exist. In the database, this should be represented by an empty string. If we don't know what someone's middle name is, then it should be represented with a NULL. This allows us to write some reports that would otherwise be unavailable to us.
If we wanted to know those people that we 'don't know' what their middle name is:
Select * From People Where MiddleName Is NULL
If we wanted to know those people that don't have a middle name:
Select * From People Where MiddleName = ''
Middle name may have been a poor choice for an example, but hopefully the point has gotten across. I've seen developers the hate NULL. They usually set a default on EVERY column just to avoid nulls. For example, you may want to track people's weight. Setting a default of 0 for this field would be bad because if you start writing statistical reports, your numbers will be flawed unless you write special code to handle.
By the way... it's 2 apostrophe's in T-SQL to represent an empty string.
-George
Strong and bitter words indicate a weak cause. - Fortune cookie wisdom