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
関連記事
-
-
phpmyadminからプロセスの停止
重たいSQL文を叩いた際、どうにも処理できず メモリ使用率が100%から下がらな ...
-
-
MySQLでIPを整数値としてカラムに格納する
MySQLでIPを整数値としてカラムに格納しているケースがあった。今までIPが必 ...
-
-
MySQLで歯抜けになっているint型の数値を取得する
MySQLで歯抜けになっているシーケンス番号を 取得したいケースがあった。 ■ソ ...
-
-
MySQLにてSELECT時にdate型のカラムから年齢を計算し取得する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから年齢を計算し ...
-
-
MySQLでランダムにデータを取得しつつページング機能も実装する方法
MySQLからデータを持ってくる際にランダムな表示を行ってほしいと言われた。ただ ...