CASE文の戻り値の型

int型フィールドの値が0ならば、結果を”(空文字)にしたい場合

このような書き方だと、結果は0になります。

(CASE aaa.[コード] WHEN 0 THEN ” ELSE aaa.[コード] END) AS [コード]

これは、データ型の優先順位があって、暗黙的な変換が行われてしまうことから、”が0に変換されてしまうようです。
データ型の優先順位 (Transact-SQL)

次のように優先順位の低いほうにあわせてCASTすれば、期待どおり結果を”にできます。

(CASE aaa.[コード] WHEN 0 THEN ” ELSE CAST(aaa.[コード] AS VARCHAR) END) AS [コード]

■参考
http://msdn.microsoft.com/ja-jp/library/ms181765.aspx

コメントを残す

メールアドレスが公開されることはありません。