Чтобы подсчитать количество слов в столбце в PostgreSQL, можно использовать комбинацию строковых функций и регулярных выражений. Вот пример использования функции regexp_split_to_table() для разбиения строки на слова и их подсчета. Альтернативный метод — использование string_to_array() с array_length

  • Подсчитать количество слов в строке в 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 с помощью regexp_split_to_table():

Мы будем использовать таблицу под названием “texts”.

Чтобы подсчитать количество слов в каждом поле контента, вы можете использовать следующий запрос:

SELECT *, (Select count(*) FROM regexp_split_to_table(content, '\s+') ) AS word_count FROM texts;

Объяснение

  • regexp_split_to_table(контент, ‘\s+’)разделяетсодержаниестрока в слова на основе пробелов (\с+соответствует одному или нескольким пробельным символам).
  • Подзапрос подсчитывает количество строк, возвращаемых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);

Результат:

Подсчитайте количество слов в столбце PostgreSQL с помощью string_to_array():

Мы будем использовать таблицу под названием «тексты».

Чтобы подсчитать количество слов в каждом поле контента, можно использовать альтернативный метод с string_to_array в сочетании с array_length:

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

Этот метод разбивает содержимое на массив слов на основе пробелов, а затем использует array_length для подсчета количества элементов в массиве. Этот метод предполагает, что слова разделены одинарными пробелами, и не обрабатывает множественные пробелы или знаки препинания.

Результат: