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のintのカラムで2147483647の値
MySQLでintのカラムに数値を入れると「2147483647」という値になっ ...
-
ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる
MySQLでON DUPLICATE KEY UPDATE句指定し、データの登録 ...
-
MySQLのRANK及びDENSE_RANK関数を用いてランキングを実装する方法
ランキング機能を実装する際、上位〇位までのデータをMySQLから持ってきて順位付 ...
-
WordPressでデータベース接続確立エラー発生時の対応方法
WordPressで「データベース接続確立エラー」というエラー表示がされた。大抵 ...
-
MySQLでdatetime型のカラムから秒は省いて検索する方法
MySQLでdatetime型のカラムに対して「2022-10-07 10:30 ...