Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLの数値を他の型に変換する方法についてまとめています。

SQLの数値の型変換はCASTまたはCONVERT

SQLで数値を型変換するには、CAST関数またはCONVERT関数を使用します。

数値を文字列に変換するにはCONVERTだが、暗黙の変換も

数値を文字列に変換などデータ型をコンバートするにはCONVERT関数を使います。しかし、convertを使わなくても暗黙的に型変換が行われるケースもあり。

下記の例では、convertで数値を文字列に変換してから文字列を結合する関数concatを使った場合と、convertせずに暗黙的に文字列に変換した場合とで、結果が同じになることを確認しています。

mysql> select convert(1, char(10)), convert(2,char(10));
+----------------------+---------------------+
| convert(1, char(10)) | convert(2,char(10)) |
+----------------------+---------------------+
| 1                    | 2                   |
+----------------------+---------------------+
1 row in set (0.00 sec)

mysql> select concat(convert(1, char(10)), convert(2,char(10)));
+---------------------------------------------------+
| concat(convert(1, char(10)), convert(2,char(10))) |
+---------------------------------------------------+
| 12                                                |
+---------------------------------------------------+
1 row in set (0.00 sec)

/* convertを使用しなくても同じ結果になる */
mysql> select concat(1,2);
+-------------+
| concat(1,2) |
+-------------+
| 12          |
+-------------+

【関連記事】
SQL convertは、値の型変換をおこなう 文字列のキャラクターセット変更が可能 

下記の例では、数値型の文字列に変換すると、0詰めやカンマ編集が可能になります。

他にも、数値を指定すると文字列型に変換した上で加工を行う関数もあります。

MySQLのformat関数は、数値と小数点以下の桁数を指定するとカンマ区切り編集をおこなった文字列に変換します。

mysql> select employees.emp_no, first_name, last_name, format(salary,0) from employees
left join salaries on employees.emp_no = salaries.emp_no
where to_date = '9999-01-01' limit 10;
+--------+------------+-----------+------------------+
| emp_no | first_name | last_name | format(salary,0) |
+--------+------------+-----------+------------------+
|  10001 | Georgi     | Facello   | 88,958           |
|  10002 | Bezalel    | Simmel    | 72,527           |
|  10003 | Parto      | Bamford   | 43,311           |
|  10004 | Chirstian  | Koblick   | 74,057           |
|  10005 | Kyoichi    | Maliniak  | 94,692           |
|  10006 | Anneke     | Preusig   | 59,755           |
|  10007 | Tzvetan    | Zielinski | 88,070           |
|  10009 | Sumant     | Peac      | 94,409           |
|  10010 | Duangkaew  | Piveteau  | 80,324           |
|  10012 | Patricio   | Bridgland | 54,423           |
+--------+------------+-----------+------------------+

上記の例は、employees(社員)テーブルとsalaries(年収)テーブルを結合して、salary(年収)をカンマ編集する例です。なお、to_date=’9999-01-01’という条件は、最新の年収データを取得するためのものです。

castとconvertの違いは、文字列の扱い

cast関数は、以下の形式で値をデータ型に変換する関数です。

cast(値 as データ型)

【関連記事】
SQL castはデータ型の明示的な変換 データベースによって、オプションに差異あり

convert関数との違いは、引数の渡し方以外に文字列に対する文字セット変換機能があります。

mysql> select convert( 'abc' using utf8 );
+-----------------------------+
| convert( 'abc' using utf8 ) |
+-----------------------------+
| abc                         |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)

上記の例は、文字列abcをutf8キャラクターセットに変換する例です。
【関連記事】
SQL convertは、値の型変換をおこなう 文字列のキャラクターセット変更が可能

なお、Oracleの場合は「convertは文字列のキャラクターセットを変更する関数」と位置づけられており、単にデータ型の変換をconvert関数で行うのは非推奨とされています。

まとめ

ポテパンダの一言メモ
  • SQLで数値型を文字列型に変換するには、castまたはconvert
  • 暗黙の変換により、自動的に型変換が行われるケースもあり
  • convertには、文字列のキャラクターセットを変更するという機能もある

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

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

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

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

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

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

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

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

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

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

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