・9・0・$・LTO_CHAR関数ってORACLEでよく使いますよね。変換するために設定する書式ルールが細かいのでけっこう理解しづらいんですね。当時、ネットで検索してもTO_CHARについて、詳しく書いてあるサイトがなかったので、TO_CHARで悩める者をなくすためにちょっと力を入れて書いてみました。TO_CHARは日付を文字列に変換する、もしくは数値を文字列に変換する関数ですが、これをまとめて考えてしまうと、僕は頭がこんがらがったので、分けて説明しようと思います。ように文字列で表示したい時に使います。日付データはそのまま表示すると○○-○○-○○とハイフンで表示するため、画面には表示しづらいですね。日付を文字列で表示するには日付書式しっかり理解する必要があります。この日付書式はなかなか曲者です。年度で言えば、YYかRRを指定すると1915年もしくは2015年と表示されます。月はMONかMONTHによって、FebかFeburaryと表示されます。書式で表示が変わるので、書式の理解はとても重要です。絶対理解してください。日付の表示形式を決める書式はたくさんありますが、とりあえず良く使いそうな書式をまとめておきます。※空白を除去します例も書きましたが、これはDBサーバの言語環境により異なります。日本語環境だと例えば、MONTHはFeburaryではなく、2月と表示されます。曜日の書式もありますが、個人的にあまり使った記憶がないので省略します。調べたい時はググってください。日付書式のサンプルです。4:30:25と表示されます。/や:は日付書式含めてシングルクォテーションで囲めばそのまま表示されます。sysdateなのでdualテーブルを使っていますが、日付データの列名を指定したい場合はsysdateを対象の列名、dualを対象テーブル名に変更してください。すれば、その列に入っている日付データが同じ書式で表示されます。次は年、月、日のように日本語verで表示したい時です。その時はダブルクォーテーションで囲めばそのまま表示できます。dual;このSQLを実行するとTIME2018年11月13日こんな感じで表示ができます。言語環境を変えて日付を文字列に変更することも可能です。dual;実行すると日本語環境で日付書式を表示します。TIME11月ダブルクォーテーションで”月”と囲っていなくても、ベースを日本語環境に設定したので11月と表示します。TH書式を設定すると表示形式を順序表示にします。4:30:25日にちの書式DDの後ろにthが付いているので、13thになります。SP書式を設定すると対象がスペル形式で表示します。4:30:25DDの後にSPが付いているので、日付がスペル表記になります。ちなみにTHとSPは一緒に使えるので、DDTHSPのような書き方が可能です。この場合はDDSPTHでもOKです。TO_CHARで数値を文字列に変換する日付の文字列変換に比べると、数値の文字列変換はシンプルです。数値書式も日付書式ほど複雑ではありません。使う数値書式として、僕は9、0、$、Lを理解しておけばよいかなと思っています。