Är det detta du vill ha?
select coalesce(cast(id as varchar(255)), '')
from #v;
Du måste göra om hela resultatkolumnen till en enda kolumn. Om du vill ha ett tomt värde så är typen någon sorts teckensträng.
I dina exempel, else id betyder att resultatet från case är ett heltal, vilket är anledningen till att du får antingen 0 eller NULL .