ホームページ  >  記事  >  データベース  >  MySQL で部分文字列の出現をカウントし、カウント順に並べ替えるにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-14 15:16:02333ブラウズ

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

MySQL での部分文字列インスタンスのカウントと数による順序付け

MySQL で、文字列カラム内の部分文字列の出現数を見つけて順序付けするそのカウントに基づく結果は、文字列操作と集計関数を組み合わせて取得できます。この課題に対処するために、解決策を詳しく見てみましょう:

以下のクエリは、CHAR_LENGTH() 関数と REPLACE() 関数を利用して部分文字列の出現数を計算します:

SELECT (CHAR_LENGTH(str) - CHAR_LENGTH(REPLACE(str, substr, ''))) / CHAR_LENGTH(substr) AS cnt
  • CHAR_LENGTH(str) は文字列全体の長さを決定します。
  • CHAR_LENGTH(REPLACE(str, substr, '')) は、部分文字列のすべてのインスタンスを空の文字列に置き換えた後の文字列の長さを計算します。部分文字列を除いた文字列の長さです。
  • 前者から後者を減算し、部分文字列の長さで割ることにより、部分文字列の出現数が得られます。

Toさらに結果を部分文字列数の降順に並べ替えるには、次の行を追加します:

ORDER BY cnt DESC

これにより、部分文字列の出現数によって並べ替えられたデータが表示され、最大数が最初に表示されます。

このクエリの使用例:

SELECT host, (CHAR_LENGTH(host) - CHAR_LENGTH(REPLACE(host, 'l', ''))) / CHAR_LENGTH('l') AS cnt
FROM user
ORDER BY cnt DESC

このクエリは、ユーザー テーブルからすべての一意のホストを取得し、各ホスト内の部分文字列 'l' の出現をカウントし、結果をカウント順に並べて表示します。先頭に「l」が最も多く出現するホスト。

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

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