CASE文の戻り値の型

投稿者: | 2011年11月8日

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

カテゴリー: SQL

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です