Получение нуля вместо пустого значения - PullRequest
1 голос
/ 14 сентября 2011

Почему приведенный ниже код дает мне 0 или ноль вместо пустого значения или пустой строки в столбце ValueA.

Как я могу изменить его на пустое значение?

select ValueA = case when ValueB = 'No' then ValueA
                     when ValueB = 'Yes' then ''
                     else ''
                     end
From Table

или

если я использую ValueB = 'Yes' then CAST(NULL AS varchar(25)) дает мне ноль и я хочу пустое место, где это Null, но когда я пытаюсь преобразовать в пустое Я получаю ноль. Почему?

Как мне получить бланк?

Ответы [ 4 ]

1 голос
/ 14 сентября 2011
select
    case when ValueB = 'No' then Cast(ValueA as VarChar(10))
         when ValueB = 'Yes' then '' 
         else '' 
         end as ValueA
    From Table 
1 голос
/ 14 сентября 2011

Поскольку значение A является числом, и оно не может содержать «пустую строку».Это будет 0 или NULL.Если вам нужны пробелы, вам нужно использовать varchar или эквивалентное символьное поле.

1 голос
/ 14 сентября 2011

Значение A должно быть числовым типом данных.Кроме того, ваши WHEN 'Yes' и ELSE являются избыточными.Попробуйте:

SELECT ValueA = CASE ValueB 
       WHEN 'No'  THEN CONVERT(VARCHAR(25), ValueA)
       ELSE '' END
FROM dbo.[Table];
1 голос
/ 14 сентября 2011

Похоже, что ValueA равно 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...