특정 문자열, 단어, 숫자를 포함하는 데이터를 추출하고싶을 때 사용하는 LIKE 쿼리!
select * from addresses where code like '11110%';
현재 나의 위치인 숭인동이 포함된 구는? 지역코드의 맨 앞자리 5개로 알 수 있다.
지역코드 테이블에서 지역코드의 맨 앞자리 5개가 '11110'인 데이터들을 전부 가져오면 종로구 전체의 동이 되는 것!
dJango에서는 어떻게 LIKE
쿼리를 사용하나 검색해보니, string__contains
를 사용하면 된다고 한다.
그래서 시도해보았더니 나오는 에러메세지
raise FieldError("Cannot resolve keyword '%s' into field. "
django.core.exceptions.FieldError: Cannot resolve keyword 'string' into field
아무래도 데이터베이스상에 존재하는 데이터는 int인데, string으로 검색을 하려고 하니 문제가 생기는 것 같았다.
그래서 숫자로 된 필드를 대상으로 LIKE
검색을 하는 법을 찾아보니 몇가지 선택지가 있었다.
특정 숫자로 끝나는 데이터를 검색하고 싶은 경우?
👉🏻 endswith
Django SQL LIKE on integer values?
특정 숫자로 시작하는 데이터를 검색하고 싶은 경우?
👉🏻 startswith
이건 도저히 예시를 찾을 수가 없었는데 (심각하게 떨어지는 검색능력.. )
혹시나 해서 endswith
를 뒤집은 startswith
라고 입력했더니 바로 성공!!!! 🤩
address_code = str(code)[:5]
print(Address.objects.filter(code__startswith=address_code))