Как правильно реализовать множественный выбор в SQLite с использованием операторов LIKE и REGEXP в Python?

Как в SQLite с помощью Python выбрать все слова, начинающиеся с заглавной буквы? Существует ли способ использовать оператор REGEXP или аналогичный метод без использования сторонних пакетов из-за опасений относительно безопасности?
  • 14 марта 2024 г. 19:49
Ответы на вопрос 3
Для реализации множественного выбора в SQLite с помощью операторов LIKE и REGEXP в Python, вы можете использовать следующий код:

```python
import sqlite3

# Подключение к базе данных SQLite
conn = sqlite3.connect('database.db')
cursor = conn.cursor()

# Выборка всех строк, где поле column соответствует одному из значений списка values с использованием оператора LIKE
values = ['value1', 'value2', 'value3']
query = "SELECT * FROM table WHERE column LIKE ? OR column LIKE ? OR column LIKE ?"
cursor.execute(query, tuple(["%"+value+"%" for value in values]))
results = cursor.fetchall()

# Выборка всех строк, где поле column соответствует регулярному выражению pattern с использованием оператора REGEXP
pattern = 'pattern'
query = "SELECT * FROM table WHERE column REGEXP ?"
cursor.execute(query, (pattern,))
results = cursor.fetchall()

conn.close()
```

Чтобы выбрать все слова, начинающиеся с заглавной буквы в SQLite с помощью Python без использования сторонних пакетов, вы можете воспользоваться оператором LIKE:

```python
import sqlite3

# Подключение к базе данных SQLite
conn = sqlite3.connect('database.db')
cursor = conn.cursor()

# Выборка всех слов, начинающихся с заглавной буквы
query = "SELECT * FROM table WHERE column LIKE 'A%' OR column LIKE 'B%' OR column LIKE 'C%' OR ..."
cursor.execute(query)
results = cursor.fetchall()

conn.close()
```

Однако, если хотите использовать оператор REGEXP, вам может потребоваться настроить базу данных SQLite с поддержкой этой функциональности, что может быть связано с рисками безопасности. Если вам важна безопасность данных, рекомендуется внимательно проверять ввод пользователя и использовать защищенные методы для работы с данными.
select word from list_words
where substr(word,1,1)=upper(substr(word,1,1))
заглавные буквы идут в кодовых таблицах подряд. По идее, будет достаточно что-то типа: 
WHERE substr(word, 1, 1) BETWEEN 'A' AND 'Z'
если таблица word меняется нечасто, добавь в неё отдельный столбец, содержащий первую букву, и сделай индекс по нему. Может значительно ускорить дело.
Похожие вопросы