FTS5 решение. При этом используется механизм виртуальной таблицы fts5vocab , который предоставляет публикуемый c интерфейс для внутренних таблиц индекса, используемых поисковой системой (FTS3 / 4 имеет аналогичную виртуальную таблицу fts4aux , но он не предоставляет тот же набор функций и не может использоваться для определения точных строк, в которых появляется термин).
sqlite> CREATE VIRTUAL TABLE dataset USING fts5(content);
sqlite> CREATE VIRTUAL TABLE dataset_vocab USING fts5vocab(dataset, instance);
sqlite> INSERT INTO dataset(rowid, content) VALUES (1, 'I like potatoes'), (2, 'Do you want a bottle?'), (3, 'I have loose my computer games');
sqlite> SELECT DISTINCT doc FROM dataset_vocab WHERE length(term) = 8 ORDER BY doc;
doc
----------
1
3
sqlite> SELECT DISTINCT doc FROM dataset_vocab WHERE length(term) = 5 ORDER BY doc;
doc
----------
3
sqlite> SELECT DISTINCT doc FROM dataset_vocab WHERE length(term) = 4 ORDER BY doc;
doc
----------
1
2
3
Без FTS5 вам придется разбивать каждый столбец на отдельные слова самостоятельно и вернуть только те, соответствующей длины. При этом токенизатор FTS5 сделает за вас самое сложное.