Запрос на подсчет слов SQLite 3 - PullRequest
9 голосов
/ 20 июля 2010

Есть ли способ подсчета слов в текстовой строке?

Я использую SQLite 3 и пытаюсь написать запрос, который берет кучу длинных строк текста и подсчитывает числослов в каждом из них.

Я также хочу игнорировать теги html (или что-либо между символами), такие как теги абзаца, теги разрыва и т. д.

Поэтому, когда я запускаю запрос, выбирая текст изВ соответствующем столбце я получаю большой текстовый вывод с некоторыми html-тегами и просто хочу посчитать слова.

Как мне написать запрос для этого?

Ответы [ 3 ]

19 голосов
/ 21 июля 2010

Насколько я знаю, нет способа напрямую посчитать количество слов в строке в SQL lite 3. (я больше знаком с MySQL и MS SQL)Заменить как обходной

 SELECT length(@String) - length(replace(@String, ' ', '')) + 1
0 голосов
/ 30 апреля 2017

Ответ от @Ziferius имеет небольшую синтаксическую ошибку, следующий - рабочий, проверенный мной.

SELECT someStr,   CASE WHEN length(someStr) >= 1   
THEN 
    (length(someStr) - length(replace(someStr, ' ', ''))) + 1   
ELSE 
    (length(someStr) - length(replace(someStr, ' ', '')))   
END as NumOfWords FROM someTable;
0 голосов
/ 18 февраля 2015

Предыдущий ответ неверен для пустых столбцов. Вам нужно будет добавить оператор case / when / then к вашему выбору:

SELECT someStr,
  CASE WHEN length(someStr) >= 1
  THEN
    (length(someStr) - length(replace(someStr), ' ', '')) + 1
  ELSE
    (length(someStr) - length(replace(someStr), ' ', ''))
  END as NumOfWords
FROM someTable;

Отредактировано: если в столбце 0 пробелов, но в нем есть слово, он будет неправильно сообщать 0. Изменено условие, чтобы разрешить его.

Источник: Трюк с Excel, который я использовал, чтобы делать то же самое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...