For varchar, you would typically use the empty string:
isnull(stringcol, '')
For remaining data types, you would need to ask your business stakeholders what they want to see.
For numeric values 0 may make sense, but it can also be grossly misleading.
Many times, you want the value to be blank in the presentation layer, and the simplest way to achieve that is to return NULL and let the presentation layer do the job.
If you have a very primitive presentation layer, like SSMS, one alternative is to convert everything to string so that you can use a blank string to represent the NULL value. But this makes the code bulky, and also inflexible, particularly for date/time values, where you will have a fixed formatting. Date/time values are best formatted in the presentation layer according to the user's regional settings, so that one user can see 2025-06-01, and another can see 01/06/2025.