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
関連記事
-
-
htmlspecialcharsを通してMySQLに格納したものを元に戻して出力
MySQLにHTMLタグを入れたくない場合にhtmlspecialcharsを使 ...
-
-
MySQLで全国の市区町村のデータを入手し、抽出する方法
都道府県と市区町村が連携したセレクトメニューを作成したかった。具体的には大阪府を ...
-
-
MySQLで歯抜けになっているint型の数値を取得する
MySQLで歯抜けになっているシーケンス番号を 取得したいケースがあった。 ■ソ ...
-
-
MySQLのREGEXPで半角記号を検索したい場合の対応方法
MySQLのREGEXPで半角記号を検索したい場合\\を付けてエスケープしないと ...
-
-
MySQLでWhere句をつけてdumpファイルを出力する方法
MySQLであるテーブルからWhere句をつけて、絞った結果をダンプさせたかった ...