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

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()関数を使う方法もあります。削除位置(先頭・末尾・両端)や目的に応じてこれらの関数を使い分けると、データのクレンジング作業を効率的に行えます。

  1. MySQLで列の値が文字列か数値かを判定して取得する方法

    MySQLで列の値が文字列か数値かを判別する方法 MySQLでは、正規表現を使ったREGEXP演算子を利用することで、列の値が文字列なのか数値なのかを簡単に判別できます。 基本構文 文字列の値のみを取得したい場合は、以下の構文を使用します。 select *from yourTableName where yourColumnName NOT regexp ^[0-9]+$; 数値のみを取得したい場合は、以下の構文を使用します。 select *from yourTableName where yourColumnName regexp ^[0-9]+$; ここで使われている正規表現 ^[0

  2. 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コマンドでいくつかのレ