MySQLで通貨記号付きの列値を合計する方法
MySQLで通貨記号付きの列値を合計する方法
MySQLでは、「€200.00」のように通貨記号が含まれた文字列データでも、集計関数SUM()とREPLACE()関数を組み合わせることで合計を求めることができます。ここでは、実際にテーブルを作成し、通貨記号付きの価格データを合計する手順を解説します。
1. サンプルテーブルの作成
まず、価格を格納するためのテーブルを作成します。
mysql> create table DemoTable616 (Price varchar(100)); Query OK, 0 rows affected (0.59 sec)
2. レコードの挿入
INSERTコマンドを使用して、通貨記号(€)付きの価格データを登録します。
mysql> insert into DemoTable616 values('€200.00');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable616 values('€300.00');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable616 values('€500.00');
Query OK, 1 row affected (0.12 sec)
3. 登録データの確認
SELECT文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable616;
実行結果は以下の通りです。
+-----------+ | Price | +-----------+ | €200.00 | | €300.00 | | €500.00 | +-----------+ 3 rows in set (0.00 sec)
4. 通貨記号を除外して合計するクエリ
ここでのポイントは、SUM()関数の中でREPLACE()関数を使い、通貨記号(€)を空文字に置き換えることです。これにより、varchar型で保存された価格データも数値として正しく合計できるようになります。
mysql> select sum(replace(Price, '€', '')) as Total_Price from DemoTable616;
実行結果:
+-------------+ | Total_Price | +-------------+ | 1000 | +-------------+ 1 row in set (0.00 sec)
このように、REPLACE()関数で通貨記号を除去してからSUM()関数で合計することで、「€200.00 + €300.00 + €500.00 = 1000」という結果を簡単に取得できます。金額データを文字列として保存している既存システムでも、この手法を活用すれば集計処理に対応できます。
-
PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方
本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用
-
MySQLのCASE WHENで0と1の値を持つ列に条件を設定する方法
MySQLで条件を設定するには、CASE WHENステートメントを使用します。本記事では、0または1の値を持つ複数の列に対して条件を設定し、その合計値に応じてステータスを判定する方法を、具体的なサンプルコードとともに解説します。1. テーブルを作成するまず、CREATE TABLE文でサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int, -> Value4 int -> );Qu