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で「Uncaught mysqli_sql_exception: BIGINT ~~」エラーの対応方法
MySQLにて「Uncaught mysqli_sql_exception: B ...
-
-
MySQLで直近〇日、〇ヶ月、〇年以内のデータを検索する方法
他社が作成されたSQL文を見ているとDATE_ADDという使ったことの無い関数が ...
-
-
SQLで同じ値を複数のレコードに対してUPDATE
やりたかった事は、複数のレコードに対して 同じ値に更新したいというもの。 $sq ...
-
-
MySQLでデータがあれば上書き、無ければ挿入する
既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...
-
-
MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表示する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから干支(十二支 ...