2016-11-03 42 views
0

我试图从包含/ ilike的数据库查询列,它们产生不同的结果。任何想法为什么?烧瓶SQLAlchemy Contains/Ilike产生不同的结果?

我现在的代码;

search = 'nel' 

find = Clients.query.filter(Clients.lastName.ilike(search)).all() 
# THE ABOVE LINE PRODUCES 0 RESULTS 

find = Clients.query.filter(Clients.lastName.contains(search)).all() 
# THE ABOVE LINE PRODUCES THE DESIRED RESULTS 

for row in find: 
    print(row.lastName) 

我担心的是我错过了什么吗?我读过'contains'并不总是有效。有没有更好的方式来做我正在做的事情?

回答

0

对于ilikelike,你需要在你的搜索这样的通配符:

Clients.lastName.ilike(r"%{}%".format(search)) 

由于Postgres docs说:

LIKE模式匹配总是覆盖整个字符串。因此,要匹配字符串中任何位置的序列,该模式必须以百分号开头和结尾。

其他区别在于contains区分大小写,而ilike不敏感。