- - PR -
SQL Server 2000 でのCASE文について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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が取ってこれないのには、何か原因があるのでしょうか・・・? |
|
投稿日時: 2008-04-14 23:10
私のところのSQL Server 2005でも発生します。
ELSE 0で型が数値になっちゃうのかな。ELSE '0' としたらどうなります? 私のところではこうすると080314となります。 #ところで私のところではELSE 0 ENDとしないとエラーになりますが。 |
|
投稿日時: 2008-04-14 23:14
ありがとうございます。
まったくご指摘の通りでした。 ELSE以下をシングルクオテーションで囲むことで、ちゃんと'080314'の形で出力されることが出来ました、ありがとうございます。 因みにEND句は付け忘れです・・・ |
1