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句を組み合わせることで、特定のパターンに一致する文字列の一部だけを簡単に抽出・更新できます。「姓_名」のようにアンダースコアで区切られたデータから名前の部分だけを取り出したい場合など、文字列の一部を加工したい場面で非常に便利なテクニックです。
-
MySQLで文字列の一部(@以降のドメイン名)を置き換える方法
MySQLでは、REPLACE()関数を使うことで、文字列の一部を簡単に別の文字列へ置き換えることができます。たとえば、メールアドレスのドメイン部分(@以降)を一括で変更したい場合に非常に便利です。ここでは、実際にテーブルを作成し、メールアドレスのドメインを置き換える手順を解説します。 1. テーブルの作成 まず、サンプル用のテーブルを作成します。 mysql> create table DemoTable -> ( -> EmailId varchar(30) -> ); Query OK, 0 rows affected (0.53 sec
-
MySQLで文字列の先頭15文字だけを表示するクエリの書き方
MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable -> ( &nbs