状態
Case文を使用したデータ抽出を行ったときなぜか抽出データがint型になって詰まってしまった。
当時のCode(多少加工あり)
Select
T.NO,
Case when T.区分 = '1' Then T.コード Else 0 END As A
From T
Where T.NO= 00
出てきたエラー
nvarchar の値 '9999999999999999999999' の変換が int 型の列でオーバーフローしました。
とか
nvarchar の値 'aa11aa11a1a1' をデータ型 int に変換できませんでした。
原因
ELSEの0が文字ではなく数字の0だったことが原因
どうやら出力型はあわせないといけないようだ。
対策
以下のコードにして完成
Select
T.NO,
Case when T.区分 = '1' Then T.コード Else '0' END As A
From T
Where T.NO= 00
余談
上記のことをアーキテクトの上司に言うとあー、よくあるよくあるといわれましたとさ。
Longのときはどうするんだろうか?Convert?