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'のように等号(=)を使うことも可能です。
この方法を使えば、ログデータやカテゴリ別の集計など、さまざまな場面で特定の値の出現頻度を簡単に把握できます。
-
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()で
-
JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説
ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ