@Lepidozavr

Какова верная реализация множественного выбора в SQLite через LIKE и REGEXP (Python)?

Использую SQLite в Python.
Нужно из БД выбрать все слова, начинающиеся с заглавной буквы.

Один из десятков перебранных вариантов:

Работает, но перечисление кучей LIKE всех букв алфавита выглядит печально:
cur.execute("SELECT * FROM list_words WHERE word LIKE 'А%' OR word LIKE 'Т%')").fetchall()


Потому хочется что-то вроде такого:
cur.execute("SELECT * FROM list_words WHERE word REGEXP '[А*-Я*]'").fetchall()

- но получаю sqlite3.OperationalError: no such function: REGEXP

Можно как-то определить REGEXP для БД в Python, но использование сторонних пакетов для меня сомнительно, т.к. побаиваюсь бэкдоров ввиду крайне малого опыта в программировании, а в найденных документациях четких для себя инструкций не увидел.

Помогите решить проблему.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
заглавные буквы идут в кодовых таблицах подряд. По идее, будет достаточно что-то типа:
WHERE substr(word, 1, 1) BETWEEN 'A' AND 'Z'
если таблица word меняется нечасто, добавь в неё отдельный столбец, содержащий первую букву, и сделай индекс по нему. Может значительно ускорить дело.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
netpastor
@netpastor
Python developer
select word from list_words
where substr(word,1,1)=upper(substr(word,1,1))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы