Просто оберните все выражение с помощью ISNULL
:
ISNULL(
CASE WHEN ... THEN ... ELSE
CASE WHEN ... THEN ... ELSE '' END ELSE '' END +
CASE WHEN ... THEN ... ELSE
CASE WHEN ... THEN ... ELSE '' END ELSE '' END,'') as [Test]
В качестве альтернативы, вы можете использовать CONCAT
, однако это немного изменит логику вашего запроса.Если одно выражение не вернуло NULL
, а другое вернуло, теперь вы получите значение.NULL + {Non NULL Expression}
= NULL
однако CONCAT(NULL,{Non NULL Expression})
= {Non NULL Expression}
.:
CONCAT(
CASE WHEN ... THEN ... ELSE
CASE WHEN ... THEN ... ELSE '' END ELSE '' END,
CASE WHEN ... THEN ... ELSE
CASE WHEN ... THEN ... ELSE '' END ELSE '' END) as [Test]
CONCAT
никогда не вернется NULL
.Если каждое выражение имеет значение NULL
, возвращается пустая строка ((n)varchar
).