2016-11-03 5 views
0

contains/ilike를 사용하여 데이터베이스에서 열을 쿼리하려고하면 다른 결과가 발생합니다. 왜 그런가?플라스크 SQLAlchemy 다른 결과를 생성합니까?

현재 코드;

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
ilike를 들어

like, 당신은이 같은 검색에 와일드 카드를 포함 할 필요가 다음 Postgres docs으로

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

말 : 항상 일치

LIKE 패턴은 전체 문자열을 포함합니다. 따라서 문자열 내의 임의의 위치에서 시퀀스를 일치 시키려면 패턴이 백분율 기호로 시작하고 끝나야합니다.

다른 차이점은 은 대소 문자를 구분하며, ilike은 구분하지 않습니다.

관련 문제