Запрос не может сопоставить части после "/" или части внутри "()" в данных - PullRequest
0 голосов
/ 17 января 2019

У меня есть поисковый запрос, записанный как

импорт sqlite3

conn = sqlite3.connect ('locker_data.db')

c = conn.cursor ()

def search1(teacher):
    test = 'SELECT Name FROM locker_data WHERE Name or Email LIKE "%{0}%"'.format(teacher)
    data1 = c.execute(test)
    return data1

def display1(data1):
    Display1 = []
    for Name in data1:
        temp1 = str(Name[0])
        Display1.append("Name: {0}".format(temp1))
    return Display1

def locker_searcher(teacher):
    data = display1(search1(teacher))
    return data

Это позволяет мне искать строку, содержащую «Mr FishyPower (Mr Swag)» или «Mr FishyPower / Mr Swag» с поисковым вводом «FishyPower». Однако, когда я пытаюсь выполнить поиск с помощью ввода «Swag», я не могу найти ту же строку.

При поиске ниже он должен был дать мне те же результаты поиска.

База данных - это простая база данных 1x1 sqlite3, содержащая 'FishyPower / Mr Swag'

Ошибка поиска при 'Swag'

Редактировать: технически я решил эту проблему, ограничив поиск столбцов только «Именем», но я хотел, чтобы код осуществлял поиск по столбцам «Имя» и «Электронная почта» и выводил результаты до тех пор, пока поиск выполняется либо внутри, либо обе колонки.

Edit2: ВЫБЕРИТЕ Имя ИЗ locker_data ГДЕ Email LIKE "% {0}%" или Имя LIKE "% {0}%" было правильным путем.

1 Ответ

0 голосов
/ 18 января 2019

Полагаю, что адрес электронной почты мистера ФишПауэра что-то вроде mrFishyPower@something.com.Запрос сравнивает только электронную почту с учителем.Если бы это было

WHERE Name LIKE "%{0}%"
OR Email LIKE "%{0}%"'

, вы бы (вероятно) получили желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...