TO_CHARファンクションは、DATETIME、数値またはNTEXT式を、指定した書式のTEXT式に変換するファンクションです。このファンクションは通常、出力データの書式の設定に使用されます。
戻り値
TEXT
構文
TO_CHAR(datetime-exp, [datetime-fmt,] [option setting])
または
TO_CHAR(num-exp, [num-fmt,] [nlsparams])
または
TO_CHAR(ntext-exp)
引数
TEXTに変換されるDATETIME式。
日時書式テンプレートを指定するテキスト式。このテンプレートでDATETIMEデータ型からTEXTへの変換方法を指定します。日時書式テンプレートの詳細は、表9-4「日時の書式要素」を参照してください。datetime-fmtのデフォルト値は、NLS_DATE_FORMATオプションによって制御されます。
現在セッションで有効な設定を一時的に上書きするOLAPオプション(NLS_DATE_LANGUAGEなど)およびその新しい設定。一般に、このオプションにはdatetime-expの翻訳対象の言語を指定します。例8-136「現在日時のスペイン語での表示」を参照してください。
他のオプションを設定するオプションは指定しないでください。たとえば、NLS_LANGUAGEやNLS_TERRITORYは設定しないでください。NLS_DATE_LANGUAGEは設定してもかまいません。TO_CHARは、文の実行中にのみ新しい値を保持できるように、指定したオプションの現行の設定を保存およびリストアしますが、そのオプションの変更を保存およびリストアできません。たとえば、NLS_TERRITORYは、NLS_DATE_FORMAT、NLS_NUMERIC_CHARACTERS、NLS_CURRENCY、NLS_CALENDARなどのオプションの値を制御します。TO_CHARに対するコールでNLS_TERRITORYの値を変更した場合、すべてのオプションはそれらの領域に適したデフォルト値に2回リセットされます。1回目は、NLS_TERRITORYがTO_CHAR文の実行中にその新しい値に設定されたときで、2回目はNLS_TERRITORYの保存された値がリストアされたときです。
TEXTに変換される数式。
数値の書式モデルを示すテキスト式。このモデルは、数値データ型(NUMBER、INTEGER、SHORTINTEGER、LONGINTEGER、DECIMAL、SHORTDECIMAL)からTEXTへの変換の実行方法を指定します。数値の書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
数値のデフォルトの書式モデルでは、NLS_NUMERIC_CHARACTERSによって指定される小数点と3桁区切りが使用されます。
num-expで使用される3桁区切り、小数点および通貨記号を指定するテキスト式。この式には、次の1つ以上のパラメータを含め、カンマで区切ります。
NLS_CURRENCY symbol
NLS_ISO_CURRENCY territory
NLS_NUMERIC_CHARACTERS dg
各国通貨記号を指定するテキスト式。11文字以上を指定することはできません。
ISO通貨記号が使用されている地域を示すテキスト式。
小数点(d
)および3桁区切り(g
)を示す、2つの異なるシングルバイト文字で構成されるテキスト式。
これらのパラメータは、NLS_CURRENCY、NLS_ISO_CURRENCYおよびNLS_NUMERIC_CHARACTERSオプションにより指定されるデフォルト値を上書きします。
TEXTに変換されるNTEXT式。NTEXTからTEXTへの変換では、NTEXT値がデータベース・キャラクタ・セットで表せない場合、データの損失をまねくことがあります。
注意
TO_CHARによる数値データ型の処理
TO_CHARファンクションは、INTEGER、SHORTINTEGER、LONGINTEGER、DECIMALおよびSHORTDECIMAL値を、TEXTに変換する前にNUMBERに変換します。このため、TO_CHARはNUMBER値を他の数値データ型より速く変換します。
TO_CHARの端数処理により発生する可能性のある影響
数値のすべての書式モデルにより、数値が指定した有効桁数に端数処理されます。表8-10「端数処理により発生する可能性のある影響」に、端数処理による一部の影響を示します。
num-expの条件 | 戻り値への影響 |
---|---|
小数桁の左側に、書式で指定された数より多くの有効桁がある場合 |
番号記号( |
指定した書式で表示できない非常に大きい正の値である場合 |
ティルド( |
指定した書式で表示できない非常に小さい負の値である場合 |
負の記号とその後に続くティルド( |
例
例8-134 日付のCHARへの変換
次の文では、今日の日付を変換し、書式を指定します。
SHOW TO_CHAR(SYSDATE, 'Month DD, YYYY HH24:MI:SS')
指定した日付書式に従った日付と時刻が表示されます。
November 30, 2000 10:01:29
例8-135 数値のテキストへの変換
この文では、数値をテキストに変換し、小数点として空白を、3桁区切りとしてピリオドを指定します。
SHOW TO_CHAR(1013.50, NA, NLS_NUMERIC_CHARACTERS ' .')
この結果、値1013.50は、次のように表示されます。
1.013 50
例8-136 現在日時のスペイン語での表示
次の文では、デフォルトの言語をスペイン語に設定し、新しい日付書式を指定します。
NLS_DATE_LANGUAGE = 'spanish' NLS_DATE_FORMAT = 'Day: Month dd, yyyy HH:MI:SS am'
次の文により、現在の日付と時刻がスペイン語で表示されます。
SHOW TO_CHAR(SYSDATE) Viernes : Diciembre 01, 2000 08:21:17 AM
NLS_DATE_LANGUAGEオプションは、文の実行中に言語を変更します。次の文により、日付と時刻がドイツ語で表示されます。
SHOW TO_CHAR(SYSDATE, NA, NLS_DATE_LANGUAGE 'german') Freitag : Dezember 01, 2000 08:26:00 AM