MySQLのTRIM()関数で列の値から特定の文字列を削除し、テーブルを更新する方法
MySQLでは、TRIM()関数とUPDATE文を組み合わせることで、列の値に含まれる特定の文字列を削除したうえでテーブルを更新できます。ここでは、サンプルテーブル「examination_btech」を使って、具体的な手順をわかりやすく見ていきましょう。
TRIM()関数の基本構文
TRIM([BOTH | LEADING | TRAILING] 削除したい文字列 FROM 対象の列)
- TRAILING:値の末尾から指定した文字列を削除
- LEADING:値の先頭から指定した文字列を削除
- BOTH:値の両端から指定した文字列を削除
例1:末尾の「(CSE)」を削除する
たとえば、「Course」列の各値の末尾にある「(CSE)」という文字列を削除してテーブルを更新したい場合は、次のようなクエリを実行します。
mysql> Update examination_btech SET Course = TRIM(Trailing '(CSE)' FROM Course); Query OK, 10 rows affected (0.13 sec) mysql> Select * from examination_btech; +-----------+----------+--------+ | RollNo | Name | Course | +-----------+----------+--------+ | 201712001 | Rahul | B.tech | | 201712002 | Raman | B.tech | | 201712003 | Sahil | B.tech | | 201712004 | Shalini | B.tech | | 201712005 | Pankaj | B.tech | | 201712006 | Mohan | B.tech | | 201712007 | Yash | B.tech | | 201712008 | digvijay | B.tech | | 201712009 | Gurdas | B.tech | | 201712010 | Preeti | B.tech | +-----------+----------+--------+ 10 rows in set (0.00 sec)
実行結果を見ると、「Course」列の末尾から「(CSE)」が取り除かれ、テーブルが正しく更新されたことが確認できます。
例2:先頭の「201712」を削除する
同様に、TRIM()関数を使えば値の先頭から文字列を削除することもできます。「RollNo」列の先頭にある「201712」を削除するには、次のようにクエリを記述します。
mysql> Update examination_btech SET RollNo = TRIM(Leading '201712' FROM RollNo); Query OK, 10 rows affected (0.04 sec) mysql> Select * from examination_btech; +--------+----------+--------+ | RollNo | Name | Course | +--------+----------+--------+ | 1 | Rahul | B.Tech | | 2 | Raman | B.Tech | | 3 | Sahil | B.Tech | | 4 | Shalini | B.Tech | | 5 | Pankaj | B.Tech | | 6 | Mohan | B.Tech | | 7 | Yash | B.Tech | | 8 | digvijay | B.Tech | | 9 | Gurdas | B.Tech | | 10 | Preeti | B.Tech | +--------+----------+--------+ 10 rows in set (0.00 sec)
結果からわかるように、「RollNo」列の先頭にあった「201712」がすべて削除され、テーブルも更新されました。
補足:両端から文字列を削除したい場合
先頭と末尾の両方から同じ文字列を削除したい場合は、キーワードとして「BOTH」を指定します。
Update examination_btech SET Course = TRIM(BOTH '(CSE)' FROM Course);
また、値の中間に含まれる文字列を一括で置き換えたい場合には、REPLACE()関数を使う方法もあります。削除位置(先頭・末尾・両端)や目的に応じてこれらの関数を使い分けると、データのクレンジング作業を効率的に行えます。
-
MySQLで列の値が文字列か数値かを判定して取得する方法
MySQLで列の値が文字列か数値かを判別する方法 MySQLでは、正規表現を使ったREGEXP演算子を利用することで、列の値が文字列なのか数値なのかを簡単に判別できます。 基本構文 文字列の値のみを取得したい場合は、以下の構文を使用します。 select *from yourTableName where yourColumnName NOT regexp ^[0-9]+$; 数値のみを取得したい場合は、以下の構文を使用します。 select *from yourTableName where yourColumnName regexp ^[0-9]+$; ここで使われている正規表現 ^[0
-
MySQLでCASE WHENを使って列内の2つの値を交換・更新する方法
MySQLである列内の2つの値を入れ替え(スワップ)したい場合、CASE WHEN文を使えば一度のUPDATE文で簡単に実現できます。ここでは、サンプルテーブルを作成しながら、実際に値を交換する手順を解説します。 1. サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1382 -> ( -> StudentName varchar(20) -> ); Query OK, 0 rows affected (0.57 sec) 2. レコードの挿入 INSERTコマンドでいくつかのレ