2015-02-10 3 views
1

Я использую НИЖЕ запрос,конкатенации не прибавляет Null полю

select TOP 1 Number,ltrim(rtrim(first_field)) + ' ' + ltrim(rtrim(second_field)) as FirstName, 
      from ViewName _details with(nolock) 
      where _details.ID=2912 

Здесь second_field является нулевым, следовательно, FirstName колонка возвращается утратившим

+0

Используйте «COALESCE», чтобы избежать нулевых значений в качестве значения по умолчанию, если значение null https: // msdn. microsoft.com/en-us/library/ms190349.aspx –

ответ

2

Удалить , после FirstName и использовать ISNULL для обоих полей

select TOP 1 Number,ltrim(rtrim(ISNULL(first_field,''))) + ' ' + ltrim(rtrim(ISNULL(second_field,''))) as FirstName from ViewName _details with(nolock) 
      where _details.ID=2912 

EDIT

Вот пример основного использования ISNULL функции

SELECT ISNULL(NULL,'REPLACED-NULL'); --Returns REPLACED-NULL 

SELECT ISNULL('Original Value','Replace-Original-With-Me-If-NULL'); --Returns Original Value 

См fiddle

5

Использование COALESCE избежать нулевых значений в качестве установленного значения по умолчанию, если нуль. you can find more about it here. Вы можете использовать coalesce, чтобы получить первое не пустое значение. Поэтому, если ваш другой столбец содержит ненулевое значение, которое вы можете использовать в случае null, вы можете использовать это имя столбца в качестве второго столбца и так далее.

 select TOP 1 
       Number, 
       ltrim(rtrim(COALESCE(first_field,anyothercolumnwithvalue,'yourdefaultvalue'))) + ' ' + ltrim(rtrim(COALESCE(second_field,anyothercolumnwithvalue,'yourdefaultvalue'))) as FirstName, 
     from 
       ViewName _details with(nolock) 
     where 
       _details.ID=2912 
+0

Спасибо будет COALESCE генерировать null, если его выражение имеет непустой параметр? любая разница или преимущество использования COALESCE против isnull? –

+2

'COALESCE (col1, col2, col3, ...., 'defaultvalue')', поскольку вы можете видеть синтаксис, который он просто проверяет для col1, если его значение null, оно будет перемещаться в col2, если значение null перемещается в col3, пока оно не будет находит ненулевое значение. Поэтому хорошо, если есть условие, когда вы не уверены, является ли столбец нулевым или нет, и если null, то вы хотите использовать другое значение col или значение по умолчанию. [Вы можете прочитать его здесь] (https://msdn.microsoft .com/EN-US/библиотека/ms190349.aspx). –

3

Вы должны использовать coalesce, чтобы иметь дело с нулям

coalesce(field, 'text to replace null')