2011-09-14 70 views
1

为什么下面的代码在列ValueA中给我0或零而不是空白值或空行 。获取零而不是空白值

如何将其更改为空白值?

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

如果我使用ValueB = 'Yes' then CAST(NULL AS varchar(25))给我空 ,我想空白的地方是空,但是当我尝试转换为空白 我得到为零。为什么?

我该如何得到空白?

+1

它是多少? – Ben

+0

“ValueA”列是什么类型? –

+0

你想要空白而不是空...为什么?你是否正在使用asp.net等等的数据(或者用其他方式来处理那些不按照你喜欢的方式处理空值的东西)? – Chains

回答

1

由于值a是一个数,并且它不能包含一个“空白行”。它要么是0,要么是NULL。如果你想空白,你需要使用varchar或等价的字符字段。

1

ValueA必须是数字数据类型。此外,您的WHEN 'Yes'ELSE是多余的。尝试:

SELECT ValueA = CASE ValueB 
     WHEN 'No' THEN CONVERT(VARCHAR(25), ValueA) 
     ELSE '' END 
FROM dbo.[Table]; 
1
select 
    case when ValueB = 'No' then Cast(ValueA as VarChar(10)) 
     when ValueB = 'Yes' then '' 
     else '' 
     end as ValueA 
    From Table