PostgreSQLの列内の単語数を数えるには、文字列関数と正規表現を組み合わせて使用できます。以下は、regexp_split_to_table()関数を使用して文字列を単語に分割し、それらを数える例です。別の方法としては、array_lengthを指定したstring_to_array()を使用します。
- PostgreSQLで文字列内の単語数を数える
- PostgreSQLの文字列列の単語数を数える
方法 1: regexp_split_to_table() を使用する:
regexp_split_to_table() 関数を使用して文字列内の単語数をカウントするには、次のクエリを使用できます。
SELECT count(*) FROM regexp_split_to_table('Hello world, welcome to world of PostgreSQL.', '\s+');
出力:

regexp_split_to_table() を使用して PostgreSQL 列内の単語数をカウントします。
「texts」という名前のテーブルを使用します

各「content」フィールドの単語数をカウントするには、次のクエリを使用できます。
SELECT *, (Select count(*) FROM regexp_split_to_table(content, '\s+') ) AS word_count
FROM texts;
• regexp_split_to_table(content, ‘\s+’) は、空白文字に基づいて「content」文字列を単語に分割します (\s+ は 1 つ以上の空白文字に一致します)。
• サブクエリは、regexp_split_to_table によって返される行数をカウントし、実質的に単語数を返します。
単語数を含む列を作成します
出力:

方法 2: string_to_array() と array_length を併用する
string_to_array() 関数を使用して文字列内の単語数をカウントするには、次のクエリを使用できます。このクエリは文字列を配列に変換し、以下に示すように array_length() 関数を使用して配列の長さを計算します。
select array_length(string_to_array('Hello world, welcome to world of PostgreSQL.', ' '), 1);
出力:

string_to_array() を使用して PostgreSQL 列内の単語数をカウントします。
「texts」という名前のテーブルを使用します

各「content」フィールドの単語数をカウントするには、string_to_array と array_length を組み合わせた代替方法を使用できます。
SELECT *, array_length(string_to_array(content, ' '), 1) AS word_count
FROM texts;
このメソッドは、スペースに基づいてコンテンツを単語の配列に分割し、array_length を使用して配列内の要素の数をカウントします。このメソッドは、単語が単一のスペースで区切られていることを前提としており、複数のスペースや句読点は処理しません。
出力:
