2006.09.05

TO_CHARで変換したものをSUBSTRで取得するときの注意

SUBSTRは通常、ある値のa番目からb番目の値を
取り出すときに使用します。
 SUBSTR(12345, 2, 3) → 戻り値:234

ところが、TO_CHARの書式を利用して変換し、
SUBSTRをかけるときには注意が必要です。

例えば、6桁表示で、桁が足りないときは前に0をつけて表示したい場合、
値が12345の場合は「012345」という値になります。
この値の1番目から3番目を取り出したい場合、
 SUBSTR(TO_CHAR(12345, '000000'), 1, 3)
というように書き、戻り値は「012」と予想するかもしれません。
しかし実際には、「01」が取れます。

TO_CHARをかけたときに「012345」の前に半角スペースが入るので、
実際には「 01」と取れていたためです。

これを回避するには、
 SUBSTR(TO_CHAR(12345, 'FM000000'), 1, 3)
というように書式の前に「FM」をつけることによって実現できます。
これで「012」という値が取れるようになります。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
admin