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

MySQLで特定の文字が2回以上含まれるレコードを取得する方法

MySQLでは、LIKE句とワイルドカード(%)を組み合わせることで、特定の文字が2回以上出現するレコードを簡単に抽出できます。この記事では、実際にテーブルを作成し、文字「e」が2回含まれるレコードを検索する手順を解説します。

1. テーブルの作成

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable
    -> (
    -> Words text
    -> );
Query OK, 0 rows affected (0.54 sec)

2. レコードの挿入

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

mysql> insert into DemoTable values('Ever');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values('Forever');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('Good');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('Never');
Query OK, 1 row affected (0.12 sec)

3. 登録データの確認

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

mysql> select *from DemoTable;

実行結果

+---------+
| Words   |
+---------+
| Ever    |
| Forever |
| Good    |
| Never   |
+---------+
4 rows in set (0.00 sec)

4. 特定の文字が2回含まれるレコードを検索する

特定の文字が2回出現するレコードを取得するには、LIKE '%e%e%'のようにパターンを指定します。これは「文字列の中に『e』が2箇所以上存在する」という条件を意味します。

以下は、文字「e」が2回含まれるレコードを検索するクエリの例です。

mysql> select *from DemoTable where Words LIKE '%e%e%';

実行結果

+---------+
| Words   |
+---------+
| Ever    |
| Forever |
| Never   |
+---------+
3 rows in set (0.00 sec)

ポイント解説

パターン「%e%e%」の意味は次のとおりです。

  • 最初の「%」:任意の0文字以上の文字列
  • 「e」:1回目の出現
  • 2番目の「%」:任意の0文字以上の文字列
  • 「e」:2回目の出現
  • 最後の「%」:任意の0文字以上の文字列

そのため、「Ever」「Forever」「Never」のように「e」を2つ以上含む単語だけが抽出され、「Good」は除外されます。

なお、大文字小文字を区別せずに検索したい場合は、照合順序(COLLATION)に依存します。デフォルトの設定では大文字小文字が区別されないため、「E」も一致対象になる点に注意してください。

  1. MySQLでカンマ区切りの値から特定の数値を含むレコードをすべて選択する方法

    MySQLで特定の数値を含むレコードを抽出するには?カンマ区切りで保存された値の中に、特定の数値が含まれているレコードをすべて取得したい場合は、concat() 関数と LIKE 演算子を組み合わせて使用します。基本の構文は以下のとおりです。select *from yourTableName where concat(,, yourColumnName, ,) like %,yourValue,%;この方法のポイント単純に LIKE %4% とすると、「14」や「40」など意図しない数値までマッチしてしまう可能性があります。そこで、列の値の前後を concat() でカンマで囲むことで、「4

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

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