Oracleの書式関数(数値を文字列書式に変換)の使い方をまとめていきます。
広告
数値を文字列書式に変換する
数値を文字列書式に変換する場合、TO_CHAR関数を使用します。
文法 | TO_CHAR(num[, format]) |
引数 | num:数値 format:変換する書式 ※引数書式参照 |
戻り値 | 数値(num)を書式(format)で指定した書式に変換した値を返却します。 |
引数書式
以下の書式を指定することで、変換後の表記を指定できます。
引数 | 説明 |
カンマ(,) | 指定位置にカンマを付与した表記 例)9,999 ※先頭をカンマで始めることは不可 ※小数点(ピリオド)の右側には指定不可 |
ピリオド(.) | 指定位置に小数点(ピリオド)を付与した表記 例)99.99 ※2つ以上の指定は不可 |
ドル($) | ドル記号表記 例)$9999 |
B | 整数部が0(ゼロ)の場合、書式モデル内の0(ゼロ)にかかわらず、固定小数点数の整数部に対して空白を表記。 例)B999 |
C | 指定した位置にISO通貨記号(NLS_ISO_CURRENCYパラメータの現在の値)を表記。 例)C999 |
D | 指定した位置にISO通貨記号(NLS_ISO_CURRENCYパラメータの現在の値)を表記。※デフォルトはピリオド(.) 例)99D99 |
EEEE | 科学表記法で値を表記 例)9.9EEEE |
G | 指定した位置に桁区切り(NLS_NUMERIC_CHARACTERパラメータの現在の値)を表記。 例)9G999 ※ドットの右側には指定不可 |
L | 指定した位置にローカル通貨記号(NLS_CURRENCYパラメータの現在の値)を表記。 例)L999 |
S | 符号表記(正の値:+ / 負の値:-) 例)S999 ※最初もしくは最後にのみ指定可 |
U | 指定した位置にユーロ(または他の)第2通貨記号(NLS_DUAL_CURRENCYパラメータの現在の値を表記。 例)U999 |
V | 10のn乗した値を返却 ※nはVの後の9の数 例)99V9 |
X | 16進数表記 ※値が負の場合はエラー 例)XXXX |
0 | ゼロ埋め表記 例)0999 / 9990 |
9 | 指定桁表記 |
MI | 末尾に、正の値の場合は空白、負の値の場合はマイナスを表記。 例)999MI ※最後にのみ指定可 |
PR | 左右に、正の値の場合は空白、負の値の場合は<>を表記。 例)999PR ※最後にのみ指定可 |
RN | ローマ数字表記 ※指定できる値は1~3999 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
SQL>-- カンマ、ピリオド、ドル SQL>SELECT TO_CHAR(12345, '99,999') as C, TO_CHAR(12345, '99,999.99') as P, TO_CHAR(123, '$999') as D FROM DUAL; C P D ------- ----------- ------- 12,345 12,345.00 $123 SQL> SQL>-- B、C、D SQL>SELECT TO_CHAR(0.123, 'B9.999') as B, TO_CHAR(123, 'C999') as C, TO_CHAR(123, '999D9') as D FROM DUAL; B C D ------- ------- ------- .123 JPY123 123.0 SQL> SQL>-- G、L、S SQL>SELECT TO_CHAR(1234, '9G999') as G, TO_CHAR(123, 'L999') as L, TO_CHAR(123, 'S999') as S1, TO_CHAR(-123, '999S') as S2 FROM DUAL; G L S1 S2 ------- ------- ------- ------- 1,234 ¥123 +123 123- SQL> SQL>-- U、V、X SQL>SELECT TO_CHAR(123, 'U999') as U, TO_CHAR(10, '999V9') as V, TO_CHAR(32, 'XX') as X FROM DUAL; U V X ------- ------- ------- ¥123 100 F SQL> SQL>-- 0、9 SQL>SELECT TO_CHAR(0, '99.99') as N1, TO_CHAR(1.23, '99.99') as N2, TO_CHAR(0, '00.00') as N3, TO_CHAR(1.23, '00.00') as N4 FROM DUAL; N1 N2 N3 N4 ------- ------- ------- ------- .00 1.23 00.00 01.23 SQL> SQL>SELECT TO_CHAR(123, '999MI') as MI1, TO_CHAR(-123, '999MI') as MI2, TO_CHAR(123, '999PR') as PR1, TO_CHAR(-123, '999PR') as PR2, TO_CHAR(5, 'RN') as RN FROM DUAL; MI1 MI2 PR1 PR1 RN ------- ------- ------- ------- ------- 123 123- 123 <123> V |