MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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」を指定するだけで、欧州形式(ピリオド区切り+カンマ小数点)の数値フォーマットを簡単に実現できます。レポート出力や多言語対応アプリケーションの表示整形など、用途に応じて活用してみてください。

  1. phpMyAdminでMySQLデータベースのDECIMAL型に精度(桁数)とスケールを指定する方法

    テーブル作成の準備:データベースを選択するMySQLでテーブルを作成する際には、まず対象となるデータベースを選択する必要があります。ここでは、あらかじめ用意したサンプルデータベースを使用して手順を説明します。テーブル名とカラム数の指定次に、作成するテーブルの名前と、必要なカラム数を入力します。入力が完了したら、「実行(Go)」ボタンをクリックしてください。すると、各カラムの詳細を定義できる画面が表示されます。DECIMAL型の構文についてDECIMAL型には2つのパラメータを指定します。1つ目は全体の桁数(精度)、2つ目は小数点以下の桁数(スケール)です。DECIMAL型の基本構文は以下のとお

  2. Excelで複数の条件を使って表示形式をカスタマイズする方法|実例12選

    本記事では、Excelにおけるユーザー定義の表示形式(カスタム数値形式)を、複数の条件を組み合わせて設定する方法を詳しく解説します。ユーザー定義の表示形式に使われるさまざまな記号の意味や使い方を学び、通貨、符号、文字列、色などを含む複数条件での書式設定ができるようになります。 Excelでユーザー定義の表示形式を作成する基本手順 ユーザー定義の表示形式を扱う前に、その基本的な操作手順を確認しておきましょう。以下の手順で設定できます。 まずワークシートを開き、ユーザー定義の表示形式を適用したいセルを選択します。 次にマウスの右クリックを行い、「セルの書式設定」を選択します。 「セルの書