JW близка, я думаю, но фактическая формула, которую вы хотите, я считаю, такова:
S.Address1 + COALESCE(' , ' + NULLIF(S.Address2,''),'') as Address1
(ниже не имеет значения, так как OP теперь сказал, что значение столбца пусто, не NULL
)
Но есть еще одна проблема - выше не будет работать (пока), потому что вы по-видимому,
CONCAT_NULL_YIELDS_NULL
установлен на
OFF
. Это нужно включить (как правило, установив
ANSI_NULLS
в
ON
),
since:
В будущей версии SQL Server CONCAT_NULL_YIELDS_NULL
всегда будет ON
и любые приложения, которые явно установить опцию OFF выдаст ошибку. Избегайте использования этой функции в новых разработках и планируйте изменять приложения, которые в настоящее время используют эту функцию.
Можете ли вы сказать мне точную разницу между COALESCE и ISNULL? – Anilkumar
@ Anilkumar - 'ISNULL' - это диалект T-SQL, ограничивается только двумя входами и заставляет тип результата быть таким же, как и тип его первого ввода, независимо от того, как обычно говорят правила приоритета типа. «COALESCE» является стандартным SQL, распространяется на несколько входов (возвращает первое значение, отличное от NULL), и выполняет нормальный тип, чтобы определить тип результата. За пределами нескольких краевых случаев (здесь нет) я всегда выбирал «COALESCE». –
@Anilkumar http://dba.stackexchange.com/questions/4274/performance-difference-for-coalesce-versus-isnull – Lamak