Поиск ключевых слов из строки с использованием sqlite и python

-1

У меня есть окно поиска, в котором можно ввести какой-либо текст и получить результаты из базы данных, например, если бы я искал "Джон Смит", запись для всех Джона Смита появлялась.

Тем не менее, я хотел бы сделать поиск менее конкретным, так как, если бы я просто искал "Джон", то эта запись появится.

Это мой запрос:

cur = g.db.execute('SELECT name, id, location, education FROM accounts WHERE email=? COLLATE NOCASE OR name=? COLLATE NOCASE OR education=? COLLATE NOCASE', (query, query, query,))

Как вы можете видеть, он также возвращает поиск не только "имя", но "местоположение" и "образование", поэтому я хотел бы, чтобы поиск по ключевым словам также применялся к ним.

Благодарю.

  • 1
    Разве SELECT * FROM phonebook WHERE name LIKE "%John%" то, что вы хотите?
  • 0
    Поскольку окно поиска возвращает строку типа «Джон Смит», мне придется разделить запрос на «Джон» и «Смит», а затем поместить его в запрос, в этом я не уверен. Извините, если мне было не ясно.
Показать ещё 1 комментарий
Теги:
sqlite3

1 ответ

0
Лучший ответ

Вам нужен оператор LIKE. Ваш SQL будет выглядеть так:

SELECT name, id, location, education FROM accounts WHERE email='John'
COLLATE NOCASE OR name LIKE '%John%' COLLATE NOCASE OR education='John'
COLLATE NOCASE

Обратите внимание на LIKE в OR name LIKE '%John%'


cur = g.db.execute('SELECT name, id, location, education FROM accounts WHERE email=? COLLATE NOCASE OR name LIKE ? COLLATE NOCASE OR education=? COLLATE NOCASE', (query, '%'+query+'%', query,))

Опять же, обратите внимание, что оператор OR для name был изменен:

OR name LIKE ?

При этом мы также изменили переданный параметр:

'%'+query+'%'

Это закроет вашу строку поиска в % символов, позволяя вашей строке появляться в любом месте поля. Чтобы сделать это с помощью параметров, мы должны заключить ваш параметр в подстановочные знаки (%)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню