2011-09-14 18 views
1

以下のコードで空白値の代わりに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))を使用している場合は、私にヌル を与え、それがヌルです私は空白たいが、私はゼロを取得し、ブランク に変換しようとします。どうして?

どうすれば空白になれますか? valueAの数であり、そしてそれは「空白行」を含むことができないのでValueAは0

+1

ですか? – Ben

+0

"ValueA"列はどのような型ですか? –

+0

nullの代わりに空白が必要なのはなぜですか?あなたはasp.netなどのデータを消費していますか(そうでなければ、あなたが望むようにヌル値を扱わないものでそれを消費しますか?) – Chains

答えて

1

が鳴ります。それは0かNULLのどちらかになります。ブランクが必要な場合は、varcharまたは同等の文字フィールドを使用する必要があります。

1

に等しくなるよう

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 
関連する問題