MySQLテーブルの値からパーセント記号(%)を削除する方法
MySQLでパーセント記号を削除するには
MySQLのテーブルに保存された文字列データから、パーセント記号(%)だけを取り除きたいケースはよくあります。例えば、金利や割合を「10%」のような形式で文字列として保存している場合、数値として計算に使う前に記号を除去する必要があります。
このような場合には、REPLACE()関数を使うのが最も簡単な方法です。ここでは、実際のサンプルを使いながら手順を解説します。
1. サンプルテーブルを作成する
まず、CREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable828(
CustomerName varchar(100),
InterestRate varchar(100)
);
Query OK, 0 rows affected (0.50 sec)
2. テストデータを挿入する
次に、INSERTコマンドを使ってパーセント記号を含むレコードを挿入します。
mysql> insert into DemoTable828 values('Chris','10%');
Query OK, 1 row affected (0.60 sec)
mysql> insert into DemoTable828 values('Robert','11.5%');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable828 values('David','15.90%');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable828 values('Bob','20%');
Query OK, 1 row affected (0.16 sec)3. 現在のレコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable828;
実行結果は以下の通りです。
+--------------+--------------+
| CustomerName | InterestRate |
+--------------+--------------+
| Chris | 10% |
| Robert | 11.5% |
| David | 15.90% |
| Bob | 20% |
+--------------+--------------+
4 rows in set (0.00 sec)
InterestRateカラムに「10%」「11.5%」のようにパーセント記号が含まれていることが確認できます。
4. REPLACE()関数でパーセント記号を削除する
パーセント記号を削除するには、UPDATE文とREPLACE()関数を組み合わせます。REPLACE()関数は「REPLACE(対象カラム, 置換前の文字列, 置換後の文字列)」という形式で使用し、ここでは「%」を空文字列('')に置き換えます。
mysql> update DemoTable828 set InterestRate=replace(InterestRate,'%','');
Query OK, 4 rows affected (0.18 sec)
Rows matched: 4 Changed: 4 Warnings: 0
5. 更新結果を確認する
もう一度テーブルの内容を確認しましょう。
mysql> select *from DemoTable828;
実行結果:
+--------------+--------------+
| CustomerName | InterestRate |
+--------------+--------------+
| Chris | 10 |
| Robert | 11.5 |
| David | 15.90 |
| Bob | 20 |
+--------------+--------------+
4 rows in set (0.00 sec)
まとめ
このように、UPDATE文とREPLACE()関数を組み合わせることで、MySQLテーブルの値からパーセント記号(%)を簡単に一括削除できます。すべての行から「%」が取り除かれ、数値のみのデータになりました。
なお、今後も同様のデータを扱う場合は、あらかじめDECIMAL型などの数値型カラムを使用し、パーセント記号を保存しない設計にしておくと、データの整合性が保たれ計算処理もスムーズになります。
-
【MySQL】EXISTSとサブクエリで別テーブルの列値と一致する行だけを抽出する方法
サブクエリとEXISTSを組み合わせるあるテーブルの列値が別のテーブルの列値と一致する場合にのみデータを取得したいときは、サブクエリとEXISTSを組み合わせると簡単に実現できます。まず、1つ目のテーブルを作成しましょう。mysql> create table DemoTable1 -> ( -> Id int, -> SubjectName varchar(20) -> )
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(