LoginSignup
1
0

More than 5 years have passed since last update.

Case条件分岐使用時に出力データが暗黙的に変換される

Last updated at Posted at 2018-08-08

状態

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?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0