Naveen, a very good question. I played with this query and this is what I come up.
When you set @TrueValue = '' --- No space you get Null because there is no character that is there is no 1st position.
When you set @TrueValue = ' ' ---- There is one space character so it pick that place and stuff with value of '123'
When you set @TrueValue = NULL, you get NULL, again same as setting '' value, so you get NULL