ホームページ >データベース >mysql チュートリアル >MySQL で部分文字列の出現をカウントし、頻度で並べ替えるにはどうすればよいですか?

MySQL で部分文字列の出現をカウントし、頻度で並べ替えるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 05:57:14867ブラウズ

How to Count Substring Occurrences and Order by Frequency in MySQL?

MySQL での部分文字列の出現数のカウントと頻度による順序付け

問題:

MySQL データベース文字列フィールドが含まれており、次のことが必要ですto:

  1. 各文字列内の特定の部分文字列の出現をカウントします。
  2. 結果を部分文字列の出現数の降順に並べます。

解決策:

これを達成するには、以下を利用できます。コード:

SELECT (CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, ''))) / CHAR_LENGTH(substr) AS cnt
FROM table_name
ORDER BY cnt DESC

説明:

  • CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, '')) は部分文字列の数を計算しますstr.
  • CHAR_LENGTH(substr) 内の出現箇所は長さです
  • cnt は、計算された出現数の別名です。
  • ORDER BY cnt DESC 句は、結果を部分文字列の出現の降順に並べ替えます。

例使用法:

mysql> select (CHAR_LENGTH('asd') - CHAR_LENGTH(REPLACE('asd', 's', ''))) / CHAR_LENGTH('s');

+-----------------------------------------------------------------+
| (CHAR_LENGTH('asd') - CHAR_LENGTH(REPLACE('asd', 's', ''))) / CHAR_LENGTH('s') |
+-----------------------------------------------------------------+
|                                                          1.0000 |
+-----------------------------------------------------------------+

mysql> select host, (CHAR_LENGTH(host) - CHAR_LENGTH(REPLACE(host, 'l', ''))) / CHAR_LENGTH('l') AS cnt from user;

+-----------+--------+
| host      | cnt    |
+-----------+--------+
| 127.0.0.1 | 0.0000 |
| honeypot  | 0.0000 |
| honeypot  | 0.0000 |
| localhost | 2.0000 |
| localhost | 2.0000 |
+-----------+--------+

注:

この方法は信頼性がありますが、大規模なデータセットではリソースを大量に消費する可能性があるという潜在的な欠点があります。

以上がMySQL で部分文字列の出現をカウントし、頻度で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。