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

【MySQL】クエリで列の値から最初の単語だけを削除する方法

MySQLで列の値から最初の単語を削除するには

MySQLで列(カラム)の値から最初の単語だけを削除したい場合は、substring()関数とlocate()関数を組み合わせて使用します。locate()で文字列内の最初のスペースの位置を特定し、その次の文字以降をsubstring()で抽出することで、最初の単語を取り除いた結果を取得できます。

基本構文

select substring(yourColumnName,locate(' ',yourColumnName)+1) AS anyAliasName from yourTableName;

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Title text
);
Query OK, 0 rows affected (0.50 sec)

レコードの挿入

insertコマンドを使用して、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values('Java in Depth');
Query OK, 1 row affected (0.49 sec)
mysql> insert into DemoTable values('C++ is an object oriented programming language');
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable values('MySQL is a relational database');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Python with data structure');
Query OK, 1 row affected (0.24 sec)

テーブルの内容を確認する

select文を使って、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable;

上記のクエリを実行すると、以下のような出力が得られます。

+------------------------------------------------+
| Title                                          |
+------------------------------------------------+
| Java in Depth                                  |
| C++ is an object oriented programming language |
| MySQL is a relational database                 |
| Python with data structure                     |
+------------------------------------------------+
4 rows in set (0.00 sec)

最初の単語を削除するクエリ

列の値から最初の単語を削除するには、以下のクエリを実行します。

mysql> select substring(Title,locate(' ',Title)+1) AS RemoveFirstWord from DemoTable;

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

+--------------------------------------------+
| RemoveFirstWord                            |
+--------------------------------------------+
| in Depth                                   |
| is an object oriented programming language |
| is a relational database                   |
| with data structure                        |
+--------------------------------------------+
4 rows in set (0.00 sec)

クエリの仕組み

このクエリでは、まずlocate(' ', Title)によって各文字列内の最初のスペースの位置を取得します。そこに「+1」を加えることで、スペースの直後の文字位置から残りの文字列全体をsubstring()で抽出しています。その結果、「Java」「C++」「MySQL」「Python」といった先頭の単語と、それに続くスペースが取り除かれた文字列が返されます。

なお、対象の文字列にスペースが含まれていない場合、locate()は0を返すため、substring()は位置1から文字列全体を返す点に注意してください。必要に応じて、WHERE句やCASE式と組み合わせて条件分岐させると、より堅牢な処理になります。

  1. 【MySQL】サブクエリとLIMIT句で最初の3つの値のみの平均を求める方法

    MySQLでは、テーブル内の先頭数件のレコードだけを対象に集計処理を行いたいケースがあります。例えば、5つのスコアが格納された列から、最初の3つの値のみの平均を求めたい場合です。このような場合には、サブクエリとLIMIT句を組み合わせることで簡単に実現できます。 本記事では、テーブルの作成からデータ挿入、そして最初の3つの値の平均を取得するまでの手順を順番に解説します。 1. テーブルの作成 まず、スコアを格納するためのテーブルを作成しましょう。 mysql> create table DemoTable (     Score int ); Qu

  2. MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方

    MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829      (      Name varchar(