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

MySQLでアンダースコア以降の文字列のみを抽出して更新する方法

はじめに

MySQLでは、SUBSTRING()関数とLIKE句を組み合わせることで、文字列の一部(たとえばアンダースコア以降の部分)だけを抽出して更新できます。本記事では、具体的なサンプルコードを使いながら、その手順をわかりやすく解説します。

テーブルの作成

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    UserName varchar(100)
);
Query OK, 0 rows affected (0.69 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにデータを登録します。

mysql> insert into DemoTable values('Smith_John');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Smith_Adam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Smith_David');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Smith_Mike');
Query OK, 1 row affected (0.12 sec)

登録データの確認

SELECT文でテーブル内の全レコードを表示してみます。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-------------+
| UserName    |
+-------------+
| Smith_John  |
| Smith_Adam  |
| Smith_David |
| Smith_Mike  |
+-------------+
4 rows in set (0.00 sec)

アンダースコア以降の文字列のみを抽出して更新するクエリ

アンダースコア(_)以降の部分のみを取り出して更新するには、SUBSTRING()関数を使用します。WHERE句にLIKE 'Smith_%'を指定することで、該当するレコードだけを対象にできます。

mysql> update DemoTable set UserName=substring(UserName,7) where UserName LIKE 'Smith_%';
Query OK, 4 rows affected (0.12 sec)
Rows matched: 4 Changed: 4 Warnings: 0

ここでSUBSTRING(UserName, 7)は、7文字目以降の文字列を返します。「Smith_」が6文字なので、7文字目以降、つまりアンダースコアの後の名前部分が抽出される仕組みです。

更新結果の確認

再度テーブルの内容を確認してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+----------+
| UserName |
+----------+
| John     |
| Adam     |
| David    |
| Mike     |
+----------+
4 rows in set (0.00 sec)

まとめ

SUBSTRING()関数とLIKE句を組み合わせることで、特定のパターンに一致する文字列の一部だけを簡単に抽出・更新できます。「姓_名」のようにアンダースコアで区切られたデータから名前の部分だけを取り出したい場合など、文字列の一部を加工したい場面で非常に便利なテクニックです。

  1. MySQLで文字列の一部(@以降のドメイン名)を置き換える方法

    MySQLでは、REPLACE()関数を使うことで、文字列の一部を簡単に別の文字列へ置き換えることができます。たとえば、メールアドレスのドメイン部分(@以降)を一括で変更したい場合に非常に便利です。ここでは、実際にテーブルを作成し、メールアドレスのドメインを置き換える手順を解説します。 1. テーブルの作成 まず、サンプル用のテーブルを作成します。 mysql> create table DemoTable -> ( -> EmailId varchar(30) -> ); Query OK, 0 rows affected (0.53 sec

  2. MySQLで文字列の先頭15文字だけを表示するクエリの書き方

    MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable     -> (    &nbs