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

MySQLでテーブルの列にユーロ(€)やドル($)の記号を挿入する方法

MySQLの数値データに対して、通貨記号(ユーロ「€」やドル「$」)を付けて表示したいケースはよくあります。この記事では、CASE文UPDATE文を組み合わせて、特定の行だけに通貨記号を挿入する方法を解説します。

1. サンプルテーブルを作成する

まずは、金額を格納するためのサンプルテーブルを作成しましょう。

mysql> create table DemoTable1874
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Amount varchar(100)
   );
Query OK, 0 rows affected (0.00 sec)

2. テストデータを挿入する

INSERT文を使って、いくつかのレコードを登録します。

mysql> insert into DemoTable1874(Amount) values('3450');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1874(Amount) values('190');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1874(Amount) values('7600');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1874(Amount) values('4500');
Query OK, 1 row affected (0.00 sec)

3. 現在のデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1874;

実行結果は以下のとおりです。

+----+--------+
| Id | Amount |
+----+--------+
|  1 | 3450   |
|  2 | 190    |
|  3 | 7600   |
|  4 | 4500   |
+----+--------+
4 rows in set (0.00 sec)

4. CASE文とUPDATE文で通貨記号を挿入する

ここが本題です。CASE文を使えば、条件に応じて異なる通貨記号を先頭に連結できます。Id = 1 の行にはドル記号「$」を、Id = 3 の行にはユーロ記号「€」を付けるクエリは次のようになります。

mysql> UPDATE DemoTable1874 SET Amount=
    CASE
       WHEN Id = 1 THEN Concat('$','',Amount)
       WHEN Id = 3 THEN Concat('€','',Amount)
    else
       Amount
       END
   ;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 4 Changed: 2 Warnings: 0

ポイント: CONCAT関数で記号と元の金額を文字列として結合しています。条件に一致しない行はELSE句によって元の値のまま維持されるため、意図しない更新を防げます。なお、「Changed: 2」とあるように、実際に変更されたのは2行だけです。

5. 更新後のデータを確認する

もう一度テーブルの中身を確認してみましょう。

mysql> select * from DemoTable1874;

実行結果は以下のとおりです。指定した行だけに通貨記号が挿入されていることがわかります。

+----+---------+
| Id | Amount  |
+----+---------+
|  1 | $3450   |
|  2 | 190     |
|  3 | €7600   |
|  4 | 4500    |
+----+---------+
4 rows in set (0.00 sec)

まとめ

CASE文とUPDATE文、そしてCONCAT関数を組み合わせることで、MySQLの既存データに対して柔軟に通貨記号を追加できます。ただし、Amount列はvarchar型である必要がある点に注意してください。数値計算を行う場合は、別途数値への変換が必要になることもあります。

  1. MySQLでAUTO_INCREMENT(自動インクリメント)列をリセットする方法

    MySQLで自動インクリメント(AUTO_INCREMENT)列の値をリセットしたい場合は、TRUNCATE TABLEコマンドを使用します。テーブルをTRUNCATEすると、すべてのデータが削除されるとともに、AUTO_INCREMENTのカウンターも初期化されます。その後、新しくレコードを挿入すると、IDは再び1から採番されます。1. テーブルを作成するまず、AUTO_INCREMENT列を持つテーブルを作成します。mysql> create table DemoTable1888 ( Id int NOT NULL AUTO_INCREMENT, PRIMA

  2. MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

    はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036