获取零而不是空值

时间:2011-09-14 18:49:00

标签: sql tsql sql-server-2008

为什么下面的代码会给我0或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 个答案:

答案 0 :(得分:1)

听起来像ValueA等于0。

答案 1 :(得分:1)

因为valueA是一个数字,并且它不能包含“空行”。它要么是0还是NULL。如果需要空白,则需要使用varchar或等效字符字段。

答案 2 :(得分:1)

值必须是数字数据类型。此外,您的WHEN 'Yes'ELSE也是多余的。旅行>

SELECT ValueA = CASE ValueB 
       WHEN 'No'  THEN CONVERT(VARCHAR(25), ValueA)
       ELSE '' END
FROM dbo.[Table];

答案 3 :(得分:1)

select
    case when ValueB = 'No' then Cast(ValueA as VarChar(10))
         when ValueB = 'Yes' then '' 
         else '' 
         end as ValueA
    From Table