Przeczytałem wszystkie odpowiedzi tutaj i zajęło trochę czasu, zanim zrozumiałem, co się dzieje. Poniższe informacje oparte są na odpowiedzi udzielonej przez udzielonej Moe Sisko i kilku powiązanych badaniach
Jeśli zapytanie SQL nie zwraca żadnych danych, nie ma pola z wartością null, więc ani ISNULL, ani COALESCE nie będą działać tak, jak chcesz. Używając zapytania podrzędnego, zapytanie najwyższego poziomu pobiera pole z wartością null, a zarówno ISNULL, jak i COALESCE będą działać tak, jak chcesz / oczekujesz.
Moje zapytanie
select isnull(
(select ASSIGNMENTM1.NAME
from dbo.ASSIGNMENTM1
where ASSIGNMENTM1.NAME = ?)
, 'Nothing Found') as 'ASSIGNMENTM1.NAME'
Moje zapytanie z komentarzami
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'