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型である必要がある点に注意してください。数値計算を行う場合は、別途数値への変換が必要になることもあります。
-
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
-
MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法
はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036