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

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

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

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) は全体の長さを決定します。 string.
  • CHAR_LENGTH(REPLACE(str, substr, '')) は、部分文字列のすべてのインスタンスを空の文字列に置き換えた後の文字列の長さを計算します。これにより、実質的に部分文字列を除いた文字列の長さが得られます。
  • 前者から後者を減算し、部分文字列の長さで割ることにより、部分文字列の数を取得します。

部分文字列数の降順で結果をさらに並べ替えるには、次のコードを追加します。

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

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

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

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