説明
この関数は、数値データを 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
グループ記号
.(ドット):小数点を表し、指定された位置に配置します。小数部が足りない場合はゼロを補い、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,(カンマ):通常は千分の位でグループ記号として使用されます。必要に応じて、十分の位や百分の位でも使用でき、数字の大きさに応じて最大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が1つ付くだけでよく、複数は意味がありません。例:
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:10^n倍の値を返します(必要に応じて四捨五入)。ここで、nはVの後に続く9の個数です。注意
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(先頭ゼロの付加)または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