ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:orazakkun SQLの結果に納得できません。どなたか解説していただけないでしょうか。
困り度:
  • 暇なときにでも
あるSQLの実行結果がどうも納得できないのです。
こちらで詳しい方に解説していただけたらと思い投稿しました。
以下SQL1の実行結果ですが、なぜ'A'の後ろに半角スペースが入ってしまうのでしょうか?
とりあえず私はSQL2のように書き直して本番のSQLは対応しました。
しかし、なんともスッキリできないのです・・・。

(前提条件)
customerテーブルは10件あるとします。

(SQL1)
select 'A'|| (select to_char(count(*),'000') from customer) expr1 from dual;

(SQL1結果) 'A'の後ろになぜか半角スペースが入ります。
expr1
-------
A 010


(SQL2)
select 'A'|| trim((select to_char(count(*),'000') from customer)) expr1 from dual

(SQL2結果) 'A'の後ろに半角スペースは入りません。
expr1
-------
A010

以上よろしくお願いします。
質問投稿日時:07/06/14 18:12
質問番号:3084556
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:hiro_sun 解決方法は#1の方が仰るとおりです。
ちなみにこの半角スペースは、変換前の数値がプラスの値であるということです。なので、変換前の値(COUNTなので0以上なのですが…)が、-10だった場合は'A-10'とスペースが付きません。
TO_CHARの仕様ですね。
参考URLの書式(0)の部分が参考になるかと。
種類:回答
どんな人:一般人
自信:自信あり
回答日時:07/06/14 20:35
回答番号:No.2
参考URL: http://biz.rivus.jp/number_format_element.html
この回答へのお礼hiro_sun 様
大変参考になりました。TO_CHARの仕様だったのですね。
これでスッキリしました。
今度からはもっとしっかり調べてからこちらで質問させていただくようにします。
ありがとうございました。

回答

良回答10pt

回答者:MZ-80B 書式モデルの修飾子(FM/FX)のFMを使ってください。
種類:回答
どんな人:一般人
自信:参考意見
回答日時:07/06/14 19:17
回答番号:No.1
この回答へのお礼MZ-80B様
とてもすばやいご回答ありがとうございました。
またよろしくお願いします。
 
最新から表示回答順に表示良回答のみ表示