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

MySQLのREGEXPで特定の単語数のみのレコードを抽出する方法

MySQLのREGEXPで特定の単語数のみのレコードを抽出する方法

カラム内に含まれる単語数が特定の数(例:2語)であるレコードだけを取得したい場合は、MySQLの正規表現(REGEXP)を利用すると便利です。基本となる構文は以下のとおりです。

select * from yourTableName where yourColumnName regexp '\land[\land ]+[ ]+[\land ]+$';

このクエリは、2つの単語がスペースで区切られている場合にマッチします。それでは、実際にサンプルテーブルを作成して動きを確認してみましょう。

テーブルの作成

まず、CREATE TABLE文でテーブルを作成します。

mysql> create table DemoTable1412
    -> (
    -> Name varchar(40)
    -> );
Query OK, 0 rows affected (0.52 sec)

レコードの挿入

続いて、INSERTコマンドを使っていくつかのレコードを追加します。

mysql> insert into DemoTable1412 values('John Adam Carol');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1412 values('Mike Sam');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1412 values('Chris James Robert');
Query OK, 1 row affected (0.15 sec)

登録済みレコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1412;

実行すると、次のような出力が得られます。

+--------------------+
| Name               |
+--------------------+
| John Adam Carol    |
| Mike Sam           |
| Chris James Robert |
+--------------------+
3 rows in set (0.00 sec)

2語のみのレコードを抽出するクエリ

ここで、スペースで区切られた2つの単語のみを含む行を抽出するクエリを実行します。

mysql> select * from DemoTable1412 where Name regexp '\land[\land ]+[ ]+[\land ]+$';

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

+----------+
| Name     |
+----------+
| Mike Sam |
+----------+
1 row in set (0.00 sec)

3つの単語を含む「John Adam Carol」と「Chris James Robert」は条件に合致しないため除外され、2語のみの「Mike Sam」だけが抽出されました。このようにREGEXPを活用すれば、カラム内の単語数に基づいた柔軟なデータ抽出が可能になります。

  1. MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法

    REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g

  2. MySQLで特定の番号を含むレコードをすべて選択する方法|FIND_IN_SET()関数の使い方

    MySQLで、カンマ区切りの値の中に特定の番号が含まれているレコードをすべて抽出したい場合は、FIND_IN_SET() 関数を使用します。この関数は、文字列リストの中から指定した値が何番目に存在するかを返し、見つからない場合は 0 を返します。そのため、結果が 0 より大きいかどうかを条件にすることで、目的の番号を含むレコードだけを取得できます。ここでは、実際にテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table demo73 -> ( -> interest_id v