使用sqlite和python从字符串中搜索关键字

时间:2015-07-20 14:10:43

标签: python sqlite

我有一个搜索框,可以输入一些文本并返回数据库的结果,例如,如果我要搜索“John Smith”,那么所有John Smiths的记录都会出现。

但是,我想使搜索不那么具体,就像我只是搜索'John'那条记录一样。

这是我的问题:

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 个答案:

答案 0 :(得分:0)

您需要SELECT name, id, location, education FROM accounts WHERE email='John' COLLATE NOCASE OR name LIKE '%John%' COLLATE NOCASE OR education='John' COLLATE NOCASE 声明。您的SQL将如下所示:

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+'%'

但是,我们还改变了传递的参数:

%

这将以%个字符包裹您的搜索字符串,允许您的字符串出现在字段中的任何位置。 要使用参数执行此操作,我们需要将参数括在通配符($loop = ...; // $loop is instantiated somewhere before this code $this->app->singleton('React\EventLoop\LoopInterface', function() use ($loop) { return $loop; });