Как искать по таблицe от 3 (трех) символов?

Есть таблица (справочник) и функция которая находит точное значение ячейки (работает).

Можно ли сделать (изменить) функцию чтобы она искала не точное значение а, к примеру, от 3 (трех) символов (букв)?

def select_last_name(message):
    conn = sqlite3.connect(settings.DATABASE)
    cursor = conn.cursor()   
    sql = "SELECT last_name, first_name, third_name, phone_v, phone_g, phone_m1, phone_m2 FROM dovidnyk WHERE last_name = ?"
    query = message.text
    query = query.title()
    cursor.execute(sql, (query,))
    result = cursor.fetchall()
    if not result:
        msg = 'Не нашол такую <b>{}</b> фамилию.'.format(message.text)
        bot.send_message(message.from_user.id, msg, reply_markup=keyboard, parse_mode='HTML')
        return
    else:
        for ln in result:
            msg =  "<i>? <u>ФИО</u></i>:  <b>{} {} {}</b>\n" \
                   "<i>? <u>Тел. внутр.</u></i>:  {}\n" \
                   "<i>☎️ <u>Тел. город.</u></i>:  {}\n" \
                   "<i>? <u>Тел. моб. 1</u></i>:  {}\n" \
                   "<i>? <u>Тел. моб. 2</u></i>:  {}\n".format(ln[0], ln[1], ln[2], ln[3], ln[4], ln[5], ln[6])
            bot.send_message(message.from_user.id, msg, reply_markup=keyboard, parse_mode='HTML')

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

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

Если нужен поиск по подстроке, то можно воспользоваться оператором LIKE:

def select_last_name(message):
    # ...
    # приводим подстроку поиска к нижнему регистру и обрамляем знаками процента
    substring = "%{}%".format(message.text.casefold())
    sql = """
        SELECT last_name, first_name, third_name, phone_v, phone_g, phone_m1, phone_m2 
        FROM dovidnyk WHERE lower(last_name) like ?"""
    cursor.execute(sql, (substring, ))
    # ... 
    

или функцией INSRT(...):

    # ... 
    substring = message.text.casefold()
    sql = """
        SELECT last_name, first_name, third_name, phone_v, phone_g, phone_m1, phone_m2 
        FROM dovidnyk WHERE instr(lower(last_name), ?) > 0"""
    cursor.execute(sql, (substring, ))
    # ... 
→ Ссылка