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

MySQLで列内に文字列が出現する回数をカウントする方法

MySQLでは、COUNT(*)LIKE句を組み合わせることで、特定の文字列が列内に出現する回数を簡単にカウントできます。この記事では、実際のサンプルを使って手順を詳しく解説します。

1. サンプルテーブルを作成する

まず、テーブルを作成します。

mysql> create table DemoTable704 (SubjectName text);
Query OK, 0 rows affected (0.58 sec)

2. レコードを挿入する

次に、INSERTコマンドを使ってテーブルにレコードを追加します。

mysql> insert into DemoTable704 values('Introduction to MySQL');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable704 values('Introduction to MongoDB');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable704 values('Introduction to MySQL');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable704 values('Introduction to Java');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable704 values('Introduction to MongoDB');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable704 values('Introduction to MySQL');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable704 values('Introduction to C');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable704 values('Introduction to Spring and Hibernate');
Query OK, 1 row affected (0.12 sec)

3. テーブルの全レコードを確認する

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

mysql> select *from DemoTable704;

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

+--------------------------------------+
| SubjectName                          |
+--------------------------------------+
| Introduction to MySQL                |
| Introduction to MongoDB              |
| Introduction to MySQL                |
| Introduction to Java                 |
| Introduction to MongoDB              |
| Introduction to MySQL                |
| Introduction to C                    |
| Introduction to Spring and Hibernate |
+--------------------------------------+
8 rows in set (0.00 sec)

4. 文字列の出現回数をカウントする

ここからが本題です。特定の文字列が列内に何回出現するかを調べるには、以下のようにCOUNT(*)LIKEを組み合わせたクエリを使用します。

mysql> SELECT COUNT(*) from DemoTable704 WHERE SubjectName LIKE '%Introduction to MySQL%';

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

+----------+
| COUNT(*) |
+----------+
|        3 |
+----------+
1 row in set (0.00 sec)

ポイント解説

  • LIKE '%文字列%':ワイルドカード(%)を使うことで、部分一致するすべての行を対象にできます。
  • COUNT(*):条件に一致した行数を返します。
  • 完全一致でカウントしたい場合は、WHERE SubjectName = 'Introduction to MySQL'のように等号(=)を使うことも可能です。

この方法を使えば、ログデータやカテゴリ別の集計など、さまざまな場面で特定の値の出現頻度を簡単に把握できます。

  1. MySQLでTIME型カラムの平均値を取得する方法をわかりやすく解説

    MySQLでTIME型カラムの平均値を求める基本構文MySQLでTIME型(時間型)カラムの平均値を取得したい場合、AVG()関数をそのまま使うだけでは正しい結果が得られません。そこで活躍するのが、TIME_TO_SEC()とSEC_TO_TIME()という2つの関数です。基本的な構文は以下の通りです。実行すると、結果が時間形式(HH:MM:SS)で返されます。SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(yourColumnName))) AS anyVariableName FROM yourTableName;この構文のポイントは、まずTIME_TO_SEC()で

  2. JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説

    ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ