[ PROJECT ] 당근마켓 클론코딩 - #05 dJango에서 MySQL 'LIKE' 사용하기

Hailee·2021년 1월 3일
0

[ PROJECT ]

목록 보기
15/16
post-thumbnail

특정 문자열, 단어, 숫자를 포함하는 데이터를 추출하고싶을 때 사용하는 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 검색을 하는 법을 찾아보니 몇가지 선택지가 있었다.

  1. 특정 숫자로 끝나는 데이터를 검색하고 싶은 경우?
    👉🏻 endswith
    Django SQL LIKE on integer values?

  2. 특정 숫자로 시작하는 데이터를 검색하고 싶은 경우?
    👉🏻 startswith
    이건 도저히 예시를 찾을 수가 없었는데 (심각하게 떨어지는 검색능력.. )
    혹시나 해서 endswith를 뒤집은 startswith 라고 입력했더니 바로 성공!!!! 🤩

address_code = str(code)[:5]
            print(Address.objects.filter(code__startswith=address_code))

profile
웹 개발 🐷😎👊🏻🔥

0개의 댓글