勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法

MySQLで商品価格のような数値の値を3桁ずつのカンマ区切りで取り出したいということがあった。いつもであれば普通に数値として取り出し、PHPのnumber_format関数でカンマ区切りにするんだけど、今回はMySQLのみで対応したかった。以下に対応方法をメモ。

 

テーブル情報

テーブル構造

mysql> SHOW COLUMNS FROM `test_table`;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | NO   |     | NULL    |                |
| price | int          | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

データ内容

mysql> SELECT * FROM `test_table`;
+----+---------+---------+
| id | name    | price   |
+----+---------+---------+
|  1 | 商品A   |   10000 |
|  2 | 商品B   | 1000000 |
|  3 | 商品C   |     500 |
+----+---------+---------+

 

対応方法

SQL文

SELECT *, FORMAT(`price`, 0) AS format_price 
FROM `test_table`;

出力結果

mysql> SELECT *, FORMAT(`price`, 0) AS format_price 
    -> FROM `test_table`;
+----+---------+---------+--------------+
| id | name    | price   | format_price |
+----+---------+---------+--------------+
|  1 | 商品A   |   10000 | 10,000       |
|  2 | 商品B   | 1000000 | 1,000,000    |
|  3 | 商品C   |     500 | 500          |
+----+---------+---------+--------------+

 

FORMAT関数

使い方

  • 第1引数 → カンマ区切りにしたい数値
  • 第2引数 → 小数点以下桁数(0の場合は小数桁無し)
  • 第3引数 → ロケール(ja_JP等。ロケール自体の詳細はこちらを参照)

リファレンス

https://dev.mysql.com/doc/refman/8.0/ja/string-functions.html#function_format

 - MySQL / MariaDB データベース

  関連記事

MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法

以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...

MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法
MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法

MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...

MySQLで「doesn't have a default value」エラーの対処
MySQLで「doesn't have a default value」エラーの対処

MySQLでINSERT時に「Field 'カラム名' doesn't have ...

MySQLでテーブルとデータの複製(コピー)する方法
MySQLでテーブルとデータの複製(コピー)する方法

MySQLでテーブルとデータを複製したかった。ダンプとかではなく、簡単なSQL文 ...

MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法
MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法

MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...