Django Filter에서 contains와 icontains로 구별

1326 단어
django를 사용하는 사람들은 Filter 필터 집합 기능을 자주 사용하는데, 여기서 contains와 icontains의 차이를 비교해 보자.
queryset.filter(name__contains="e")
queryset.filter(name__icontains="e")

이 두 줄 코드에 대응하는 sql 문장을 인쇄하면 차이를 볼 수 있습니다
'contains': 'LIKE BINARY %s',
'icontains': 'LIKE %s',

이 중의 BINARY는 도대체 무슨 뜻을 대표하는가, 답은 정확한 대소문자이고,'icontains'중의'i'는 대소문자를 무시한다는 뜻이다.
예:
select * from plant where name like BINARY '%e%';
2   eee

select * from plant where name like '%e%';
1   Ezs
2   eee

그래서 두 개의 ql에서 찾아낸 결과 집합은 다르다.

좋은 웹페이지 즐겨찾기