查询无法匹配数据中“ /”后的部分或“()”内的部分

时间:2019-01-17 00:32:22

标签: sqlite

我的搜索请求写为

导入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

这使我可以在搜索输入为“ FishyPower”的情况下搜索包含“ FishyPower先生(赃物先生)”或“ FishyPower先生/赃物先生”的行。但是,当我尝试使用输入“ Swag”进行搜索时,则无法找到同一行。

在下面的搜索中,它应该给了我相同的搜索结果。

该数据库只是一个简单的1x1 sqlite3数据库,其中包含“ FishyPower / Mr Swag”

Search Error on 'Swag'

编辑:从技术上讲,我确实通过将要搜索的列限制为仅“名称”来解决了该问题,但是我希望代码同时搜索“名称”和“电子邮件”列并输出结果,只要在其中一个或两个内进行搜索即可。两列。

Edit2:从locker_data中选择名称,如电子邮件“%{0}%”或名称“%{0}%”是正确的方法。

1 个答案:

答案 0 :(得分:0)

我猜想FishyPower先生的电子邮件地址类似于mrFishyPower@something.com。该查询仅将电子邮件与教师进行比较。如果是

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

您将(可能)获得所需的结果。