受講料が最大70%OFF 受講料が最大70%OFF

TO_CHAR関数は、Oracleデータベースなどで、数値や日付型のデータを文字列に変換する関数です。

文字列への変換を行うTO_CHAR関数は、例えば数値をゼロ埋めしたり、日付を”2020/08/20″などのスラッシュ付きで編集したり、SQL文を作成する時によく使用する関数です。

この記事ではTO_CHAR関数の使い方を詳しく解説します。TO_CHAR関数は、RDB(リレーショナルデータベース)ごとに使い方に違いがあるため、RDB別に使い方を解説していきます。

TO_CHAR関数の構文

まずは、TOCHAR関数の構文を確認していきましょう。
この記事では、Oracleデータベースの
TO
CHAR`関数をベースに解説していきます。

構文

OracleのTO_CHAR関数の構文と引数は次の通りです。

TO_CHAR ( expr [, format [, nls_param]] )

引数

引数 説明
expr 数値や日付値など、文字列に変換する値を指定します。
format 変換する書式(※後述参照)
nls_param NLS_CURRENCYなどのNLSパラメータ

#### 数値を書式付きで文字列に変換する

構文を確認したところで、TO_CHAR関数を使ったサンプルコードを見ていきましょう。
まずは、数値を書式付きで文字列に変換する方法を解説します。

【カンマ区切りの文字列に変換】

最初は、数値型の値を3桁ごとにカンマ区切りの文字列に変換する例です。

SELECT TO_CHAR(1234567,'FM999,999,999') FROM DUAL

結果
----------------
1,234,567

書式Gでも同じように区切り文字を挿入できます。

SELECT TO_CHAR(1234567,'FM999G999G999') FROM DUAL

結果
----------------
1,234,567

数値が書式で指定した桁数よりも大きい場合(オーバーフロー)、結果はすべて”#”になります。

SELECT TO_CHAR(1234567890,'FM999G999G999') FROM DUAL

結果
----------------
#########

【数値をゼロ埋めする】

“100”を”00100″など、ゼロを数値の左側に挿入する、いわゆる「ゼロ埋め」の方法についても見ていきましょう。ゼロ埋めは、書式に”0″を指定すると、指定した桁に数値が存在しない場合は、0で埋められた状態で編集されます。

SELECT TO_CHAR(100, '00000') FROM DUAL

結果
----------------
00100

数値書式

上記で紹介した方法以外にも、さまざな数値書式があります。次の表は、OracleデータベースのTO_CHAR関数で指定可能な数値書式モデルの一覧です。

書式 説明
カンマ(,) 指定の位置にカンマを挿入します。
G 指定の位置にNLSNUMERICCHARACTERパラーメータで指定された桁区切り文字を挿入します。
ドット(.) 指定の位置に小数点記号を挿入します。
D 指定の位置にNLSNUMERICCHARACTERパラーメータで指定された小数点記号を挿入します。
0 先行ゼロに対して’0’を戻します。(ゼロ埋め)
9 指定された桁数の値を戻します。(ゼロ埋めしない)
B 整数部が0(ゼロ)の場合、書式モデル内の0(ゼロ)にかかわらず、固定小数点数の整数部に対して空白を戻します。
C NLSISOCURRENCYパラーメータで指定された通貨記号を挿入します。
EEEE 科学表記(指数表記)
L NLS_CURRENCYパラーメータで指定されたローカル通貨記号を挿入します。
〜MI 負の値の後に負の符号(-)を戻します。
正の値の後に空白を戻します。
〜PR 山カッコ\の中に負の値を戻します。
正の値の前後に空白を付けて戻します。
RN(rn) 大文字(小文字)のローマ数字で戻します。
S9999 数字の先頭に符号(+/-)を戻します。
TM テキストの最小数値書式モデル。文字の最小数を戻します。
TM9 デフォルトの書式。64文字までは固定表記で、65文字以上は”E”などの科学表記
V 値に 10 の n 乗を掛けて戻す。Vの後ろの9の数だけ乗じる。
X 16進数表記を戻す。

日付型の値を書式付きで文字列に変換する

数値の変換の次は、日付型の値を書式付きで文字列に変換する方法を解説します。

【スラッシュやコロンで日付や時刻を区切る】

日付型の値を画面などに表示する場合、2020/08/20 12:00:00のように、スラッシュやコロンで日付や時刻の各項目を区切るのが一般的です。

TO_CHAR関数で上記のように日付を書式付き文字列に変換する時は、次のように記述します。

SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL

結果
----------------
2020/08/20 12:00:00

【曜日を取得する】

TO_CHAR関数の書式に「DAY」を指定すると、曜日を取得できます。

SELECT TO_CHAR(SYSDATE,'Day') FROM DUAL

結果
----------------
金曜日

言語を指定して曜日を取得する場合は、TO_CHAR関数の第3引数に言語を指定します。

SELECT TO_CHAR(SYSDATE, 'Day', 'NLS_DATE_LANGUAGE = ENGLISH') FROM DUAL

結果
----------------
Friday

日付書式

上記で紹介した方法以外にも、さまざな日付書式があります。次の表は、OracleデータベースのTO_CHAR関数で指定可能な日付書式モデルの抜粋です。(紀元(AD)など、一般的に使われない日付書式は省略しています)

書式 説明
E 時代名の略号。(M = 明治,T = 大正,S = 昭和,H = 平成,R = 令和)
EE 時代名の名称。(明治、対象、昭和、平成、令和)
YYYY 4桁の西暦
RR 2桁の西暦(OracleはYYYYの使用を推奨している)
Q 四半期を表す数値。(1-3月= 1、4-6月= 2、7-9月= 3、10~12月= 4)
MM 月2桁 (00〜12)
MON 月の短縮名を返す。(Jan, Feb, Mar, …)
MONTH 月の名前を返す。(January, February, March, …)
DY 曜日の短縮名を返す。(月〜日)
DAY 曜日名を返す。(月曜日〜日曜日)
DD 日2桁 (00〜31)
AM/PM 午前または午後を返す
HH (HH12) 12時間表示の時間(00〜12)
AM/PM書式と組み合わせて使うのが一般的
HH24 24時間表示の時間 (00〜24)
MI 分 (00〜59)
SS 秒 (00〜59)
FF… ミリ秒・ナノ秒(Fの文字数に応じて精度が上がる)
TZR タイムゾーンの地域名
TZD タイムゾーン 省略名
TZH タイムゾーン オフセット(時)
TZM タイムゾーン オフセット(分)

SQL Server、MySQLではTO_CHAR関数は使えない

注意しなければならないのが、TO_CHAR関数はすべてのデータベースで使用できる関数ではありません。

「SQL Server」の場合、数値や日付の変換にはCONVERT関数を使用します。「MySQL」の場合では、数値を書式付きで変換する場合はFORMAT関数を使用し、日付の場合はDATE_FORMATTIME_FORMAT関数を使用します。

TO_CHAR関数をマスターして、数値・日付を変換しよう

「Oracle」「PostgreSQL」などのデータベースで使えるTO_CHAR関数の使い方について解説してきました。

TO_CHAR関数は、SQL文の中でも頻繁に使用する関数です。この機会に是非覚えて自在に数値や日付型の値を文字列に変換する方法をマスターしましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。