MySQLで列を更新し、末尾のアンダースコア(_)を削除する方法
MySQLで文字列の末尾にある特定の値(この場合はアンダースコア「_」)を削除したい場合、TRIM()関数を使用します。以下にUPDATE文の基本構文を示します。
update yourTableName set yourColumnName=trim(trailing '_' from yourColumnName);
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable1521
-> (
-> StudentCode varchar(20)
-> );
Query OK, 0 rows affected (1.33 sec)テストデータの挿入
次に、INSERTコマンドを使っていくつかのレコードを挿入します。末尾にアンダースコアが付いたデータと付いていないデータを混ぜて登録します。
mysql> insert into DemoTable1521 values('345_');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1521 values('12345');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable1521 values('9084_');
Query OK, 1 row affected (1.29 sec)現在のデータを確認
SELECT文ですべてのレコードを表示してみます。
mysql> select * from DemoTable1521;
実行結果は以下の通りです。
+-------------+ | StudentCode | +-------------+ | 345_ | | 12345 | | 9084_ | +-------------+ 3 rows in set (0.00 sec)
TRIM()関数で末尾のアンダースコアを削除する
ここで本題のクエリです。trim(trailing '_' from カラム名)を使うことで、列の末尾からアンダースコアのみを取り除いて更新できます。
mysql> update DemoTable1521
-> set StudentCode=trim(trailing '_' from StudentCode);
Query OK, 2 rows affected (0.34 sec)
Rows matched: 3 Changed: 2 Warnings: 0実行結果を見ると、「Rows matched: 3」に対して「Changed: 2」と表示されています。これは、3件すべてが条件に一致しましたが、実際に値が変更されたのは末尾にアンダースコアがあった2件だけであることを意味します。すでにアンダースコアを持たない「12345」は更新対象外となり、無駄な書き込みが発生しない点もポイントです。
更新後のデータを確認
もう一度テーブルのレコードを確認してみましょう。
mysql> select * from DemoTable1521;
実行結果は以下の通りです。
+-------------+ | StudentCode | +-------------+ | 345 | | 12345 | | 9084 | +-------------+ 3 rows in set (0.00 sec)
まとめ
TRIM(TRAILING '削除したい文字' FROM カラム名)を使えば、MySQLで列の末尾から指定した文字を簡単に削除できます。なお、先頭の文字を削除したい場合はLEADING、両端を削除したい場合はBOTHを指定することで同様の処理が可能です。データクレンジングや入力値の正規化など、日常的なメンテナンス作業でぜひ活用してください。
-
MySQLで列の値と任意のテキストを連結して1つの列に表示する方法
MySQLで列の値とテキストを連結する方法MySQLでは、CONCAT()関数を使用することで、テーブルの列の値と任意のテキストを連結し、結果を1つの列として表示できます。本記事では、サンプルテーブルを作成し、実際に文字列を連結して表示するまでの手順を具体例とともに解説します。1. テーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0 rows affected (0.93 sec)こ
-
MySQLのUPDATE文で「None」の値を「N/A」に一括置換する方法
MySQLでは、UPDATE文とWHERE句を組み合わせることで、特定の条件に一致するレコードの値を簡単に置き換えることができます。この記事では、テーブル内の「None」という文字列を「N/A」に一括で更新する手順を、実際のSQLコード例とともに解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のコマンドを実行します。mysql> create table DemoTable1903 ( FirstName varchar(20), LastName varchar(20) , Age int ); Que