MySQLで「.」を千の位の区切り文字、「,」を小数点の区切り文字として数値をフォーマットする方法
MySQLでは、FORMAT()関数を使うことで、数値の区切り文字を柔軟に指定できます。この方法はMySQL 5.5以降のバージョンで利用可能です。本記事では、バージョン8.0.12を使用して動作を確認していきます。
mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)
FORMAT()関数の基本構文
構文は以下の通りです。ポイントは第3引数にロケール「de_DE」(ドイツ語圏のロケール)を指定することです。ドイツ語圏では、ピリオド(.)が千の位の区切り文字、カンマ(,)が小数点の区切り文字として使われるため、このロケールを指定するだけで目的の書式が実現できます。
SELECT FORMAT(yourColumnName, valueAfterDecimalPoint, 'de_DE') AS anyAliasName FROM yourTableName;
第2引数には小数点以下の桁数を指定します。上記の例では任意の桁数を表しています。
サンプルテーブルの作成
それでは、実際に構文を確認するためのテーブルを作成しましょう。テーブル作成のクエリは以下の通りです。
mysql> create table formatNumberDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number DECIMAL(19,1)
-> );
Query OK, 0 rows affected (1.13 sec)テストデータの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into formatNumberDemo(Number) values(10000000000000.2); Query OK, 1 row affected (0.15 sec) mysql> insert into formatNumberDemo(Number) values(1000.4); Query OK, 1 row affected (0.21 sec) mysql> insert into formatNumberDemo(Number) values(1000000.6); Query OK, 1 row affected (0.11 sec) mysql> insert into formatNumberDemo(Number) values(100000000.7); Query OK, 1 row affected (0.17 sec) mysql> insert into formatNumberDemo(Number) values(100000000000000000.8); Query OK, 1 row affected (0.15 sec)
登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from formatNumberDemo;
出力結果は以下の通りです。
+----+----------------------+ | Id | Number | +----+----------------------+ | 1 | 10000000000000.2 | | 2 | 1000.4 | | 3 | 1000000.6 | | 4 | 100000000.7 | | 5 | 100000000000000000.8 | +----+----------------------+ 5 rows in set (0.00 sec)
ピリオドを千の位区切り、カンマを小数点区切りとしてフォーマットする
ここまで準備ができたら、いよいよ本題のクエリです。「.」を千の位の区切り文字、「,」を小数点の区切り文字として数値をフォーマットするには、以下のようにクエリを実行します。ここでは小数点以下3桁を指定しています。
mysql> SELECT FORMAT(Number, 3, 'de_DE') AS Numberformat from formatNumberDemo;
出力結果は以下の通りです。大きな数値でも正しく「10.000.000.000.000,200」のような形式に整形されていることが分かります。
+-----------------------------+ | Numberformat | +-----------------------------+ | 10.000.000.000.000,200 | | 1.000,400 | | 1.000.000,600 | | 100.000.000,700 | | 100.000.000.000.000.000,800 | +-----------------------------+ 5 rows in set (0.00 sec)
まとめ
このように、FORMAT()関数の第3引数にロケール「de_DE」を指定するだけで、欧州形式(ピリオド区切り+カンマ小数点)の数値フォーマットを簡単に実現できます。レポート出力や多言語対応アプリケーションの表示整形など、用途に応じて活用してみてください。
-
phpMyAdminでMySQLデータベースのDECIMAL型に精度(桁数)とスケールを指定する方法
テーブル作成の準備:データベースを選択するMySQLでテーブルを作成する際には、まず対象となるデータベースを選択する必要があります。ここでは、あらかじめ用意したサンプルデータベースを使用して手順を説明します。テーブル名とカラム数の指定次に、作成するテーブルの名前と、必要なカラム数を入力します。入力が完了したら、「実行(Go)」ボタンをクリックしてください。すると、各カラムの詳細を定義できる画面が表示されます。DECIMAL型の構文についてDECIMAL型には2つのパラメータを指定します。1つ目は全体の桁数(精度)、2つ目は小数点以下の桁数(スケール)です。DECIMAL型の基本構文は以下のとお
-
Excelで複数の条件を使って表示形式をカスタマイズする方法|実例12選
本記事では、Excelにおけるユーザー定義の表示形式(カスタム数値形式)を、複数の条件を組み合わせて設定する方法を詳しく解説します。ユーザー定義の表示形式に使われるさまざまな記号の意味や使い方を学び、通貨、符号、文字列、色などを含む複数条件での書式設定ができるようになります。 Excelでユーザー定義の表示形式を作成する基本手順 ユーザー定義の表示形式を扱う前に、その基本的な操作手順を確認しておきましょう。以下の手順で設定できます。 まずワークシートを開き、ユーザー定義の表示形式を適用したいセルを選択します。 次にマウスの右クリックを行い、「セルの書式設定」を選択します。 「セルの書