説明
この関数は、数値型データをVARCHAR型のデータに変換します。
説明
OceanBaseデータベースV4.3.5では、この関数はV4.3.5 BP1バージョンからサポートされています。
構文宣言
TO_CHAR(number [, fmt])
パラメータの説明
number:変換する数値データを表します。fmt:オプションで、数値出力形式を指定するためのパラメータです。fmtを省略した場合、numberはVARCHAR値に変換されます。詳細については、以下の fmt を参照してください。
fmt
fmtパラメータの形式と値は以下のとおりです:
- 数値:
0と9。 - グループ化:
.、,、DおよびG。 - 通貨:
$、C、LおよびU。 - 計算変換:
EEEE、RN、VおよびX。 - プラスとマイナス記号:
MI、PRおよびS。 - 標準形式:
TM。 - その他:
BおよびFM。
数値
0:プレースホルダーであり、数字の位置を表します。対応する位置に該当する文字を返し、存在しない場合は0で補います。注意
0は強制的な記号であり、対応するビットがない場合は0で補います。これは9とは異なる特性です。例:
SELECT TO_CHAR(123, '00000'), TO_CHAR(123.456, '0000.0000');実行結果は次のとおりです:
+-----------------------+-------------------------------+ | TO_CHAR(123, '00000') | TO_CHAR(123.456, '0000.0000') | +-----------------------+-------------------------------+ | 00123 | 0123.4560 | +-----------------------+-------------------------------+ 1 row in set9:プレースホルダーであり、数字の位置を表します。具体的には以下のとおりです:小数点以下では、対応する文字に変換され、存在しない場合は
0で補います。整数部では、対応するものがない場合は文字を補いません。
例:
SELECT TO_CHAR(123, '999999'), TO_CHAR(123.456, '9999.9999');実行結果は次のとおりです:
+------------------------+-------------------------------+ | TO_CHAR(123, '999999') | TO_CHAR(123.456, '9999.9999') | +------------------------+-------------------------------+ | 123 | 123.4560 | +------------------------+-------------------------------+ 1 row in set
グループ化記号
.(ピリオド):小数点を表し、指定された位置に配置します。小数部が不足している場合は0を補い、小数部がfmtで指定された桁数を超える場合は四捨五入します。注意
fmtでは小数点を1つのみ指定できます。例:
SELECT TO_CHAR(123.555, '999.99'), TO_CHAR(123.5, '999.99');実行結果は次のとおりです:
+----------------------------+--------------------------+ | TO_CHAR(123.555, '999.99') | TO_CHAR(123.5, '999.99') | +----------------------------+--------------------------+ | 123.56 | 123.50 | +----------------------------+--------------------------+ 1 row in set,(カンマ):一般的には小数点以下3桁目に現れ、グループ化記号として使用されます。必要に応じて小数点以下1桁目や2桁目にも使用でき、数字の大きさに応じてN回繰り返すことができます。注意
,はfmtの先頭には置けず、整数部分にのみ配置できます。例:
SELECT TO_CHAR(123456, '99,99,99'), TO_CHAR(123456789, '999,999,999');実行結果は次のとおりです:
+-----------------------------+-----------------------------------+ | TO_CHAR(123456, '99,99,99') | TO_CHAR(123456789, '999,999,999') | +-----------------------------+-----------------------------------+ | 12,34,56 | 123,456,789 | +-----------------------------+-----------------------------------+ 1 row in setD(ISO小数点記号):「ピリオド」の国際版(ISO)であり、.と同じ機能を持ちますが、使用は1回のみです。違いとして、この要素はパラメータNLS_NUMERIC_CHARACTERのデフォルト値を使用します。注意
特別な必要がない限り、この形式記号は使用せず、パラメータ値(
NLS_NUMERIC_CHARACTER)も無闇に変更しないでください。例:
SELECT TO_CHAR(123.555, '999D99'), TO_CHAR(123.5, '999D99');実行結果は次のとおりです:
+----------------------------+--------------------------+ | TO_CHAR(123.555, '999D99') | TO_CHAR(123.5, '999D99') | +----------------------------+--------------------------+ | 123.56 | 123.50 | +----------------------------+--------------------------+ 1 row in setG:「カンマ」のISO標準であり、グループ化記号として使用され、複数箇所に配置することができます。注意
小数点以下の部分を変換する場合は、
Dと組み合わせて使用する必要があり、ピリオド(.)とは組み合わせられません。例:
SELECT TO_CHAR(123456, '99G99G99'), TO_CHAR(123456789, '999G999G999');実行結果は次のとおりです:
+-----------------------------+-----------------------------------+ | TO_CHAR(123456, '99G99G99') | TO_CHAR(123456789, '999G999G999') | +-----------------------------+-----------------------------------+ | 12,34,56 | 123,456,789 | +-----------------------------+-----------------------------------+ 1 row in set
通貨関連
$(ドル記号):先頭にドル記号を付けた値を返します。注意
$はfmtの任意の場所に配置できますが、1回しか使用できません。例:
SELECT TO_CHAR(123.45, '$999.99'), TO_CHAR(123.45, '9,9,9,9.$99');実行結果は次のとおりです:
+----------------------------+--------------------------------+ | TO_CHAR(123.45, '$999.99') | TO_CHAR(123.45, '9,9,9,9.$99') | +----------------------------+--------------------------------+ | $123.45 | $1,2,3.45 | +----------------------------+--------------------------------+ 1 row in setC(国際通貨記号):指定された位置にISO通貨記号(現在のNLS_ISO_CURRENCYパラメータが表す値)を返します。注意
Cはfmtの整数部分の最初の位置にのみ配置できます。例:
SELECT TO_CHAR(123.45, 'C999.99');実行結果は次のとおりです:
+----------------------------+ | TO_CHAR(123.45, 'C999.99') | +----------------------------+ | USD123.45 | +----------------------------+ 1 row in setL(ローカル通貨記号):Cのローカル版であり、指定された位置にローカル通貨記号を返します。これはフォーマット全体の先頭と末尾に配置できます。例:
SELECT TO_CHAR(123.45, 'L999.99'), TO_CHAR(123.45, '999.99L');実行結果は次のとおりです:
+----------------------------+----------------------------+ | TO_CHAR(123.45, 'L999.99') | TO_CHAR(123.45, '999.99L') | +----------------------------+----------------------------+ | $123.45 | 123.45$ | +----------------------------+----------------------------+ 1 row in setU:NLS_DUAL_CURRENCYパラメータが表す現在の値に基づいて、ユーロ(またはその他の)のダブル通貨記号を指定された位置に返します。例:
SELECT TO_CHAR(123.45, 'U999.99'), TO_CHAR(123.45, '999.99U'), TO_CHAR(123.45, '999U999');実行結果は次のとおりです:
+----------------------------+----------------------------+----------------------------+ | TO_CHAR(123.45, 'U999.99') | TO_CHAR(123.45, '999.99U') | TO_CHAR(123.45, '999U999') | +----------------------------+----------------------------+----------------------------+ | $123.45 | 123.45$ | 123$450 | +----------------------------+----------------------------+----------------------------+ 1 row in set
計算変換
EEEE(科学計算演算子):科学的記数法で表される値を返します。科学的計算方式のため、小数点の前に9または0を付けるだけでよく、複数付けることは意味がありません。例:
SELECT TO_CHAR(10000, '9EEEE'), TO_CHAR(10000, '9.9EEEE'), TO_CHAR(10000, '999.9EEEE');実行結果は次のとおりです:
+-------------------------+---------------------------+-----------------------------+ | TO_CHAR(10000, '9EEEE') | TO_CHAR(10000, '9.9EEEE') | TO_CHAR(10000, '999.9EEEE') | +-------------------------+---------------------------+-----------------------------+ | 1E+04 | 1.0E+04 | 1.0E+04 | +-------------------------+---------------------------+-----------------------------+ 1 row in setRN(rn):整数(1から3999の間)をローマ字に変換します。RNは大文字への変換を、rnは小文字への変換を示します。注意
RN(rn)は他の記号と組み合わせて使用することはできません。例:
SELECT TO_CHAR(99, 'RN'), TO_CHAR(99, 'rn');実行結果は次のとおりです:
+-------------------+-------------------+ | TO_CHAR(99, 'RN') | TO_CHAR(99, 'rn') | +-------------------+-------------------+ | XCIX | xcix | +-------------------+-------------------+ 1 row in setV:Vの後ろに続く9の個数である10^n倍の値を返します(必要に応じて四捨五入します)。注意
Vはfmtフォーマットでは小数表現と一緒に書くことはできませんが、通貨などの記号と混在して使用することはできます。例:
SELECT TO_CHAR(123.456, '999V99'), TO_CHAR(123.4, '999V999'), TO_CHAR(5, '9V');実行結果は次のとおりです:
+----------------------------+---------------------------+------------------+ | TO_CHAR(123.456, '999V99') | TO_CHAR(123.4, '999V999') | TO_CHAR(5, '9V') | +----------------------------+---------------------------+------------------+ | 12346 | 123400 | 5 | +----------------------------+---------------------------+------------------+ 1 row in setX:指定された桁数の16進数値を返します。指定された数が整数でない場合は、整数に丸められます。制限は以下のとおりです:この要素は正の値または0のみを受け入れます。負の値はエラーを返します。
この要素の前には0(先頭の0を返す)またはFMのみを付けることができます。その他の要素を付けるとエラーが返されます。Xを使用して0もFMも指定しない場合、返される値には常に先頭のスペースが付きます。
例:
SELECT TO_CHAR(10, 'X'), TO_CHAR(10, 'XXXX');実行結果は次のとおりです:
+------------------+---------------------+ | TO_CHAR(10, 'X') | TO_CHAR(10, 'XXXX') | +------------------+---------------------+ | A | A | +------------------+---------------------+ 1 row in set
プラスとマイナス記号
MI(mi):末尾にマイナス記号(-)を付けた負の値を返します。正の数の場合は、末尾にスペースを追加します。注意
MI形式の要素は、数値フォーマットモデルの最後の位置にのみ配置できます。例:
SELECT TO_CHAR(-123, '999MI'), TO_CHAR(-123, '999mi');実行結果は次のとおりです:
+------------------------+------------------------+ | TO_CHAR(-123, '999MI') | TO_CHAR(-123, '999mi') | +------------------------+------------------------+ | 123- | 123- | +------------------------+------------------------+ 1 row in setPR:負の数を表す別の方法:正の数の場合は、先頭にスペースを追加します。
負の数の場合は、数字を角括弧
<>で囲みます。注意
PR形式の要素は、数値フォーマットモデルの最後の位置にのみ配置できます。例:
SELECT TO_CHAR(-1234.89,'9G999D00PR'), TO_CHAR(1234.89,'9G999D00PR');実行結果は次のとおりです:
+--------------------------------+-------------------------------+ | TO_CHAR(-1234.89,'9G999D00PR') | TO_CHAR(1234.89,'9G999D00PR') | +--------------------------------+-------------------------------+ | <1,234.89> | 1,234.89 | +--------------------------------+-------------------------------+ 1 row in set
S:正の数にプラス記号(+)、負の数にマイナス記号(-)を追加します。注意
S形式の要素は、数値フォーマットモデルの最初または最後の位置にのみ配置できます。例:
SELECT TO_CHAR(-123.45,'S999.99'), TO_CHAR(123.45,'S999.99');実行結果は次のとおりです:
+----------------------------+---------------------------+ | TO_CHAR(-123.45,'S999.99') | TO_CHAR(123.45,'S999.99') | +----------------------------+---------------------------+ | -123.45 | +123.45 | +----------------------------+---------------------------+ 1 row in set
標準形式
TM:デフォルト値は TM9 であり、出力が64文字を超えない限り、固定記号で数字を返します。出力が64文字を超える場合は、自動的にその数字を科学的記数法で返します。数字の長さが64ビットを超えると、TM9 の出力は TME の出力と同じになります。
例:
SELECT TO_CHAR(1234, 'TM9'), TO_CHAR(1234, 'TME');
実行結果は次のとおりです:
+----------------------+----------------------+
| TO_CHAR(1234, 'TM9') | TO_CHAR(1234, 'TME') |
+----------------------+----------------------+
| 1234 | 1.234E+03 |
+----------------------+----------------------+
1 row in set
その他
B(スペース):整数部分の先頭にスペースを追加し、任意の位置に表示できます。注意
Bは整数部にのみ表示できます。例:
SELECT TO_CHAR(1234, '99B99'), TO_CHAR(1234, '9999B'), TO_CHAR(1234, 'B9999');実行結果は次のとおりです:
+------------------------+------------------------+------------------------+ | TO_CHAR(1234, '99B99') | TO_CHAR(1234, '9999B') | TO_CHAR(1234, 'B9999') | +------------------------+------------------------+------------------------+ | 1234 | 1234 | 1234 | +------------------------+------------------------+------------------------+ 1 row in setFM(fm):前のスペースを削除します。注意
FMはfmtの整数部の最初の位置にのみ表示できます。例:
SELECT TO_CHAR(' 123.456', 'fm999.999'), TO_CHAR(' 123.456', 'FM999.999');実行結果は次のとおりです:
+-----------------------------------+-----------------------------------+ | TO_CHAR(' 123.456', 'fm999.999') | TO_CHAR(' 123.456', 'FM999.999') | +-----------------------------------+-----------------------------------+ | 123.456 | 123.456 | +-----------------------------------+-----------------------------------+ 1 row in set
戻り値の型
VARCHAR型のデータを返します。number値がNULLの場合、NULLを返します。
例
SELECT
TO_CHAR(11111.111, '999,999.9999'),
TO_CHAR(11111.111, '000,000.0000'),
TO_CHAR(55555.555, '99,999.99'),
TO_CHAR(55555.555, '99,999V99'),
TO_CHAR(NULL, '999.999');
実行結果は次のとおりです:
+------------------------------------+------------------------------------+---------------------------------+---------------------------------+--------------------------+
| TO_CHAR(11111.111, '999,999.9999') | TO_CHAR(11111.111, '000,000.0000') | TO_CHAR(55555.555, '99,999.99') | TO_CHAR(55555.555, '99,999V99') | TO_CHAR(NULL, '999.999') |
+------------------------------------+------------------------------------+---------------------------------+---------------------------------+--------------------------+
| 11,111.1110 | 011,111.1110 | 55,555.56 | 55,55556 | NULL |
+------------------------------------+------------------------------------+---------------------------------+---------------------------------+--------------------------+
1 row in set