【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式と組み合わせて条件分岐させると、より堅牢な処理になります。
-
【MySQL】サブクエリとLIMIT句で最初の3つの値のみの平均を求める方法
MySQLでは、テーブル内の先頭数件のレコードだけを対象に集計処理を行いたいケースがあります。例えば、5つのスコアが格納された列から、最初の3つの値のみの平均を求めたい場合です。このような場合には、サブクエリとLIMIT句を組み合わせることで簡単に実現できます。 本記事では、テーブルの作成からデータ挿入、そして最初の3つの値の平均を取得するまでの手順を順番に解説します。 1. テーブルの作成 まず、スコアを格納するためのテーブルを作成しましょう。 mysql> create table DemoTable ( Score int ); Qu
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(