ホームページ >データベース >mysql チュートリアル >MySQL および PostgreSQL で N 番目の単語を抽出し、その出現回数をカウントするにはどうすればよいですか?

MySQL および PostgreSQL で N 番目の単語を抽出し、その出現回数をカウントするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 21:30:12273ブラウズ

How Can I Extract the Nth Word and Count its Occurrences in MySQL and PostgreSQL?

MySQL で N 番目の単語を抽出し、出現する単語をカウントする

この質問は、特定の単語を抽出できる MySQL クエリの可能性に関するものです。テキスト文字列から抽出し、その出現回数をカウントします。提供された例では、テキストから 2 番目の単語を抽出しようとしています。

Postgres 用のクエリ ソリューション

MySQL は正規表現の直接一致抽出をネイティブにサポートしていませんが、PostgreSQL などの他のデータベースはより直接的なアプローチを提供します。 PostgreSQL では、次のクエリを使用できます。

SELECT word, count(*)
FROM (
  SELECT SPLIT_PART(text, ' ', 2) AS word
  FROM (SELECT 'THIS IS A TEST' AS text) AS tmp
) AS words
GROUP BY word;

このクエリは、SPLIT_PART 関数を使用して、スペースに基づいてテキストを個々の単語に分割し、2 番目の単語を抽出します。結果のテーブルでは、出現順に単語がグループ化されます。

MySQL の回避策

MySQL の場合は、正規表現の直接抽出がサポートされていないため、別のアプローチが必要です。回避策の 1 つは、部分文字列とロケート関数の組み合わせを使用することです。

SELECT SUBSTRING(
  text,
  LOCATE(' ', text) + CHAR_LENGTH(' '),
  LOCATE(' ', text, ( LOCATE(' ', text) + 1 ) - ( LOCATE(' ', text) + CHAR_LENGTH(' ') )
) AS word, count(*)
FROM (SELECT 'THIS IS A TEST' AS text) AS tmp
GROUP BY word;

このクエリは、テキスト内の最初の単語の後ろにある最初のスペースの位置を特定します。次に、この位置にスペースの長さを追加して、2 番目の単語の抽出を開始します。抽出された部分文字列の長さは、次のスペースを検索し、そこから開始位置を減算することによって計算されます。

この方法では、異なる n 番目の単語を抽出するための調整が必要です。

以上がMySQL および PostgreSQL で N 番目の単語を抽出し、その出現回数をカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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