2007年6月19日火曜日

オラクルの小ネタ?それとも常識!?

これまた、初めて知ったョ・・・。
オラクルで数値を文字に変換するときによく

to_char()

って使いますよね?
これで何気なく、ZEROパディングでフォーマット。


select to_char(1, '000') from dual;

って、初めてやったのですが・・・
よく見ると、結果が

[]001

で、[]は空白スペースが入ってるんですね!
これじゃあ、パディングした意味ないじゃんと思わず

trim(to_char(1, '000'))

とやっちゃったんだけど、
こんな二度手間何度もしないといけないなんて、
何かしっくりこないなぁ。
と思いオラクルの公式で検索したら、やっぱりありましたね・・・
[]のところには実はサイン記号が入ってて表示させるように
しないと空白が入っちゃうてことなのかな?と理解しました。
んでもってその空白を消す方法はと

to_char(1, 'FM000')

ってやればいんですね。すばらすい。
さらに、

select to_char(1, '000'),
to_char(1, 'S000'),
to_char(1, 'FM000')
from dual

で比較すれば一目瞭然ですね^^;
ちなみに、オラクルの公式でも'FM'が
「あまり知られてないのか、trim(to_char(1, '000'))って
 書いてる人を良く見かける」と何気なくかいてましたorz
でも、これでまた一つ賢くなりました。(`・ω・´)

2009/1/8 記事訂正
ZEROサプレス → ZEROパディング

2 件のコメント:

匿名 さんのコメント...

ZERO paddingじゃっちゃ

Hawkeye さんのコメント...

匿名さん
ご指摘ありがとうございました。
早速記事を訂正しました。