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で大文字小文字
半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...
-
-
MySQLで「Incorrect integer value: '' for column」エラーの対応方法
MySQLで「Incorrect integer value: '' for c ...
-
-
MySQLが起動も再起動もできない際の対応方法
サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...
-
-
SSH接続でMySQLにダンプファイルをインポートする方法
phpMyAdminやAdminerが入っていなかったり、ダンプファイルのサイズ ...
-
-
MySQLでJOINの高速化
JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには ...