一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • 数値書式モデルTO_CHAR()を使いこなしたい(前編)【IT技術】

突然ですが皆さん、Oracleの数値書式モデルは使いこなせていますか?

数値書式モデルとは、文字列型の数値に対して書式を設定することで、数値の表示形式をコントロールするというもの。

実際の現場では、主に先頭のゼロ埋めに使うことが多いです。

 

例)12.3を4桁で、かつ先頭はゼロ埋めしたい。

TO_CHAR(‘12.3’, ‘0000.9’) → 0012.3

 

書式は主に0か9、それとFMをつけるか否か、というのが実際よく使うのですが、ではその書式設定によってどのように数値が変わるのか、まとめてみようと思います。

 

1.書式一覧

実際の現場で使われる書式は以下の通り。

書式 内容
,  (カンマ) 指定した位置にカンマを返す
. (ピリオド) 指定した位置に小数点を返す
0 (ゼロ) 先頭の場合、桁が足りなくても0を返す
正の値の場合:先頭の場合、桁が足りない時は空白を返す

負の値の場合:先頭の場合、桁が不足する時は負の記号をつけて空白を返す

S 負の場合は負の記号(−)、正の場合は正の記号(+)を返す
FM 前後に空白をつけずに返す

 

2.具体例

上記の書式を使うと、数値をどのように表現できるのかを以下にまとめます。

数値:123456(6桁)※半角スペースは!で表現しています。

 

<例1:全て9、または全て0>

SELECT TO_CHAR(123456, ‘999999999’) FROM DUAL; → !!!123456

SELECT TO_CHAR(123456, ‘000000000’) FROM DUAL; → 000123456

 

<例2:0と9が混ざっている>

SELECT TO_CHAR(123456, ‘909,999,999’) FROM DUAL; → !00,123,456

SELECT TO_CHAR(123456, ‘090,999,999’) FROM DUAL; → 000,123,456

SELECT TO_CHAR(123456, ‘990,999,999’) FROM DUAL; → !10,123,456

SELECT TO_CHAR(123456, ‘099,999,999’) FROM DUAL; → 000,123,456

0が出た時点でゼロ埋めされる。直感的ではないため、0と9が混ざっている場合は使い方に要注意。

 

<例3:FMを使用>

SELECT TO_CHAR(123456, ‘FM999999999’) FROM DUAL; → 123456

SELECT TO_CHAR(123456, ‘FM000000000’) FROM DUAL; → 000123456

→FMをつけることで、書式9で発生した空白を削除することができる。便利。

 

<例4:桁数が異なる>

SELECT TO_CHAR(12345678, ‘999999999’) FROM DUAL; → !12345678

SELECT TO_CHAR(123456789, ‘99999999’) FROM DUAL; → #########

→数値の桁数>書式の場合、文字化けが発生して全て#になる。

 ちなみに#の数は書式の桁数+1になる。

 

3.まとめ

今回はOracleで使える書式関数(TO_CHAR)についてまとめました。

この書式ですが、実は小数点を含んでくると直感的には分かりにくくなる箇所があるので、次回はその点についてまとめていきたいなと思います。

今回はここまで!

 

以上

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア