TO_CHARファンクションは、DATETIME、数値またはNTEXT式を、指定した書式の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-138「現在日時のスペイン語での表示」を参照してください。
他のオプションを設定するオプションは指定しないでください。たとえば、NLS_DATE_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への変換の実行方法を指定します。
数値のデフォルトの書式モデルでは、NLS_NUMERIC_CHARACTERSによって指定される小数点と3桁区切りが使用されます。
関連項目: 『Oracle Database SQL言語リファレンス』の数値書式モデルに関する説明 |
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-17「端数処理により発生する可能性のある影響」に、端数処理による一部の影響を示します。
例
例8-136 日付のCHARへの変換
次の文では、今日の日付を変換し、書式を指定します。
SHOW TO_CHAR(SYSDATE, 'Month DD, YYYY HH24:MI:SS')
指定した日付書式に従った日付と時刻が表示されます。
November 30, 2000 10:01:29
例8-137 数値のテキストへの変換
この文では、数値をテキストに変換し、小数点として空白を、3桁区切りとしてピリオドを指定します。
SHOW TO_CHAR(1013.50, NA, NLS_NUMERIC_CHARACTERS ' .')
この結果、値1013.50は、次のように表示されます。
1.013 50
例8-138 現在日時のスペイン語での表示
次の文では、デフォルトの言語をスペイン語に設定し、新しい日付書式を指定します。
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