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+');

出力:

PostgreSQL の単語数を数える 1

regexp_split_to_table() を使用して PostgreSQL 列内の単語数をカウントします。

「texts」という名前のテーブルを使用します

PostgreSQL の単語数を数える 2

各「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 によって返される行数をカウントし、実質的に単語数を返します。

単語数を含む列を作成します

出力:

PostgreSQL の単語数を数える 3

方法 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);

出力:

PostgreSQL の単語数を数える 4

string_to_array() を使用して PostgreSQL 列内の単語数をカウントします。

「texts」という名前のテーブルを使用します

PostgreSQL の単語数を数える 5

各「content」フィールドの単語数をカウントするには、string_to_array と array_length を組み合わせた代替方法を使用できます。

SELECT *, array_length(string_to_array(content, ' '), 1) AS word_count
FROM texts;

このメソッドは、スペースに基づいてコンテンツを単語の配列に分割し、array_length を使用して配列内の要素の数をカウントします。このメソッドは、単語が単一のスペースで区切られていることを前提としており、複数のスペースや句読点は処理しません。

出力:

PostgreSQL の単語数を数える 6