2016-10-08 5 views
3

INTデータ型の列IDを空の文字列['']に変換する必要があります。私はソース列のデータ型を変更すべきではありませんが、他のテーブルの変換でそれを変換する必要があります。それにnullがあるので、ID列は "nullable"です。これは私のコードです。ISNULLを使用してINT列の値を空の文字列に変換します

CREATE TABLE #V(ID INT) ; 

INSERT INTO #V 
    VALUES (1),(2),(3),(4),(5),(NULL),(NULL) ; 

SELECT CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column 
FROM #V; 

これが返されます。

ID_Column 
1 
2 
3 
4 
5 
NULL 
NULL 

次のように私は私のCASE文のそれを変更する場合:

CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column 

それが返されます。

ID_Column 
1 
2 
3 
4 
5 
0 
0 

答えて

3

はこれが何をしたいですか?

select coalesce(cast(id as varchar(255)), '') 
from #v; 

結果列全体を単一の列にする必要があります。空白の値が必要な場合、その型はある種の文字列です。

else idは、caseの結果が整数なので、0またはNULLのいずれかになります。

+1

素晴らしい!完璧に動作します。 – enigma6205

関連する問題