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を活用すれば、カラム内の単語数に基づいた柔軟なデータ抽出が可能になります。
-
MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法
REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g
-
MySQLで特定の番号を含むレコードをすべて選択する方法|FIND_IN_SET()関数の使い方
MySQLで、カンマ区切りの値の中に特定の番号が含まれているレコードをすべて抽出したい場合は、FIND_IN_SET() 関数を使用します。この関数は、文字列リストの中から指定した値が何番目に存在するかを返し、見つからない場合は 0 を返します。そのため、結果が 0 より大きいかどうかを条件にすることで、目的の番号を含むレコードだけを取得できます。ここでは、実際にテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table demo73 -> ( -> interest_id v