Выбрать значения из базы данных, содержащие данную строку

у меня есть база данных "users.db" , содержащая таблицу "users", записи в которой имеют следующую структуру: введите сюда описание изображения

Я хочу получить все записи, в которых передаваемая строка str входит в строку из колонки user_name:

str in user_name = True

Обращение к базе данных происходит посредством sqlite3. Подскажите пожалуйста, как я могу это сделать)


Ответы (1 шт):

Автор решения: gil9red

Используйте оператор like:

SELECT * FROM users WHERE user_name LIKE '%Петр%'

В запросе с sqlite3 с переменной это выглядит так (тут % это спецсимвол для like, чтобы поиск был в любой части текста)

text = '%Петр%'
connect.execute("SELECT * FROM users WHERE user_name LIKE ?", [text]).fetchall()

С sqlite 3.7.15 можно использовать функцию instr (тут уже не нужно будет добавлять %, чтобы найти внутри строки, в отличии от like):

text = 'Петр'
connect.execute("SELECT * FROM users WHERE instr(user_name, ?) > 0", [text]).fetchall()
→ Ссылка