You cannot mix data types in your display values.
Your first options returns an empty string ("") and your second option returns a date (SH_DATE) so it chokes on mixing the two.
Same issue for the 0, numneric mixed with date.
For testing purposes just go with something very clear like
IF ISNULL({SH.SH_DATE})
THEN "I AM A NULL"
ELSE totext({SH.SH_DATE})