Я прочитал здесь все ответы, и мне потребовалось время, чтобы понять, что происходит. Нижеследующее основано на ответе Мо Сиско и некоторых связанных исследованиях.
Если ваш SQL-запрос не возвращает никаких данных, значит, нет поля с нулевым значением, поэтому ни ISNULL, ни COALESCE не будут работать так, как вы хотите. Используя подзапрос, запрос верхнего уровня получает поле с нулевым значением, и ISNULL и COALESCE будут работать так, как вы хотите / ожидаете.
Мой запрос
select isnull(
(select ASSIGNMENTM1.NAME
from dbo.ASSIGNMENTM1
where ASSIGNMENTM1.NAME = ?)
, 'Nothing Found') as 'ASSIGNMENTM1.NAME'
Мой запрос с комментариями
select isnull(
--sub query either returns a value or returns nothing (no value)
(select ASSIGNMENTM1.NAME
from dbo.ASSIGNMENTM1
where ASSIGNMENTM1.NAME = ?)
--If there is a value it is displayed
--If no value, it is perceived as a field with a null value,
--so the isnull function can give the desired results
, 'Nothing Found') as 'ASSIGNMENTM1.NAME'