вопрос о постановке дела - PullRequest
0 голосов
/ 05 октября 2011

У меня есть таблица с 2 столбцами с одинаковым именем

ValueA  ValueB  ValueA
12      Yes     
        No      NULL
20      Yes    
0       No      0
3       No      3

Логика такова

  • когда ValueA равно ''
  • и ValueB - это 'No'
  • тогда ValueA во втором столбце должно быть '' (не NULL)

Я написал это утверждение, но оно дает мне NULL вместо ''

Case when ValueB ='No' then convert(varchar(25), ValueA)
when ValueB ='No' and ValueA ='' then ''
else ''
end

даже если я напишу

Case when ValueB
when 'No' then convert(varchar(25), ValueA) 
else ''
end

оба приведенных выше кода дает мне одинаковые результаты

Как заменить или удалить NULL на '' во втором столбце ValueA?

Ответы [ 3 ]

1 голос
/ 05 октября 2011

Вам нужен конкретный случай, когда вы указываете NULL в качестве вывода.

CASE WHEN ValueA = '' AND ValueB = 'No' THEN NULL
     WHEN                 ValueB = 'No' THEN convert(varchar9250, ValueA)
                                        ELSE ''
END

РЕДАКТИРОВАТЬ

Тогда я неправильно понял ваш вопрос.Но вы можете использовать тот же подход ...

CASE WHEN ValueA = '' AND ValueB = 'No' THEN ''
     WHEN                 ValueB = 'No' THEN convert(varchar9250, ValueA)
                                        ELSE ''
END


Или, как уже предлагали люди, использовать ISNULL или COALESCE для удаления значений NULL ...

CASE WHEN ValueB = 'No' THEN ISNULL(convert(varchar9250, ValueA), '')
                        ELSE ''
END
0 голосов
/ 05 октября 2011

Это может помочь:

Select
case when ValueA = '' and ValueB = 'No' then '' 
     when ValueB = 'No' then ValueA     else '' end  [ValueA]
from table
0 голосов
/ 05 октября 2011

Надеюсь, я правильно понял вопрос, вы можете использовать coalesce или isnull для замены нулевых значений.

Это может быть ваше заявление:

case when ValueB = 'Yes' then '' 
     when ValueB = 'No' then coalesce(cast(ValueA as varchar(25)), '') 
else null     end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...