2016-11-03 85 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不敏感。