ホームページ >データベース >mysql チュートリアル >MySQL および PostgreSQL で N 番目の単語を抽出し、その出現回数をカウントするにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。