2017-04-19 13 views
0

私はdecimal(16,2)として定義された列のカップルを持っています。ブランクの値を持つSQL Server Management Studioの10進数列

値 ''(空白)を残したいと思います。

私は

CASE 
    WHEN FIELD1 IS NULL THEN '' 
    ELSE FIELD1 
END AS FIELD_NAME 

として選択クエリを持っている場合は、この列の性質としては許されないだろう。

この列に空白の値を入力するにはどうすればよいですか?あなたが解決策をお勧めしますNULL、などの値を残す、またはテキストにすべてを変換する必要がありますどちらか

感謝

+1

なぜNULLにしておきますか?このような状況に適しています。あなたができる最悪の**事は 'varchar()'を変更して空の値を冷蔵保存することでした。 nullを返さない場合は、値がNULLの空白をアプリケーションに返すだけです。または、アプリケーション自体でこれを処理します。 – scsimon

+2

あなたがデータ型を変更しない限り、あなたはそれを発見できませんでした。正直なところ、このタイプのものはSQL Serverではなく、フロントエンドで処理する必要があります。これはsqlからNULLを返す正しい値です。 –

答えて

0

。エラーの理由は、同じ列に小数点とテキスト値を返すことができないためです(''はテキスト値です)。次を使用し、ブランク値をテキストおよび挿入するために、すべてを変換するには

SELECT ISNULL(CONVERT(VARCHAR(20), Field1), '') 
FROM myTable 
0

私がコメントに同意するが、あなたは、あなたがあたりとしてあなたのcase文でキャストを使用することができますSQLでそれを行う必要がある場合コードの下に。しかし、以下のコードは最終的な選択がvarcharで小数点ではないことを意味するため、フロントエンドでの処理が優れています。フロントエンドを処理すると、SQLから10進数を返し、NULLの場合は空白を表示できます。

create table #temp (thing decimal(16,2)) 
insert into #temp (thing) values(NULL) 

select 
case when thing IS NULL then '' 
else cast(thing as varchar(5)) end 
from #temp 
関連する問題