勉強したことのメモ

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

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

  MySQL データベース

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 データベース

  関連記事

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

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

MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法

MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法をメモ。 & ...

SortableJSを使ってデータの並べ替え&保存

あるシステムを拝見した際にtableタグ内に並んでいる項目をドラッグ&ド ...

MySQLで一連の処理を関数のように実行できるストアドプロシージャの設定と利用方法

MySQL関連のサイトを見ていた際にストアドプロシージャが云々というページがあっ ...

MySQLでカラム数の異なるテーブルを結合する(UNION)

MySQLでカラム数の異なるテーブル同士をUNIONで結合させたかった。ただ、何 ...