- PR -

SQL Server 2000 でのCASE文について

1
投稿者投稿内容
セルカー
ベテラン
会議室デビュー日: 2004/04/08
投稿数: 70
投稿日時: 2008-04-14 22:29
SQL Server 2000で開発をしております。

decimal型で入っている8桁の数字の下6桁だけを抽出したい(20080314→080314といった具合)ので、文字列に変換した後RIGHTで抽出しようとしています。

SELECT RIGHT(CAST([hoge] AS VARCHAR),6)
FROM hogehoge

ならもちろん望みどおりの結果を得られるのですが、

SELECT CASE hoge2
WHEN 1 THEN RIGHT(CAST([hoge] AS VARCHAR),6)
ELSE 0
FROM hogehoge

と、CASE文を一緒に使うと先頭の文字が0の時、5桁の数字になってしまいます。

varcharに変更してるのに0が取ってこれないのには、何か原因があるのでしょうか・・・?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-04-14 23:10
私のところのSQL Server 2005でも発生します。
ELSE 0で型が数値になっちゃうのかな。ELSE '0' としたらどうなります?
私のところではこうすると080314となります。
#ところで私のところではELSE 0 ENDとしないとエラーになりますが。
セルカー
ベテラン
会議室デビュー日: 2004/04/08
投稿数: 70
投稿日時: 2008-04-14 23:14
ありがとうございます。

まったくご指摘の通りでした。
ELSE以下をシングルクオテーションで囲むことで、ちゃんと'080314'の形で出力されることが出来ました、ありがとうございます。

因みにEND句は付け忘れです・・・
1

スキルアップ/キャリアアップ(JOB@IT)