안녕하세요. 이번 시간에는 startswith, istartswith, endswith, iendswith에 대해서 간단하게 알아보겠습니다.

 


 먼저 Post에 있는 데이터는 이러합니다. 문자열이 무엇으로 시작하는지는 startswith 조건을 걸어서 구현할 수 있어요. 예를 들어서, post가 "hi"로 시작하는 것은 어떻게 뽑아내야 할까요?

 

 post__startswith="hi"라고 쓴 것을 주목하시면 됩니다. 이것은 "hi"로 시작하는 post를 뽑는 구문입니다. 결과를 보겠습니다.

 

 

 정확하게, "hi"로 시작하는 포스트가 나왔습니다. 앞에 i를 붙여서 istartswith 조건을 달면, 대소문자 구분 없이 검사해 주는데요. 예를 들어, istartswith="Hi"는 "hi"도 "hI"도 매치가 됩니다.

 

 

 대소문자 구분 없이 post가 "Hi"로 시작되는 포스트를 뽑으려면 위와 같이 뽑아주시면 됩니다.

 

 

 "hi"는 "Hi"에서 1번째 글자를 소문자로 바꾸면 되므로, 결과에 걸림을 확인할 수 있어요.

 


 이제 ~ 으로 끝나는지를 검사해 봅시다. 접미 패턴입니다. "you"로 끝나는지 검사하려면, endswith를 쓰면 됩니다. 예를 들어, 위 예제는 "you"로 끝나는 post를 모두 찾습니다.

 

 

  "you"로 끝나는 것은 2개였으므로, 2개의 포스트가 나오게 됩니다.

 

 

 대소문자 구분없이 뽑으려면, iendswith를 쓰시면 됩니다. 이 쿼리는 post 중에서 post의 내용이 대소문자 구분 없이 "yOu"로 끝나는 것을 모두 찾습니다.

 

 

 "yOu"나 "you"나 대소문자 구분 없이 보면 같은 것이니, 2개의 포스트가 출력됩니다.

 


 포스트를 하나 추가했습니다. 이 포스트들 중에서 "bye"로 시작하고, :"bye"로 끝나는 포스트를 찾고 싶습니다. 어떻게 하면 좋을까요? 사실, filter 조건에 일일히 다 적어주어도 되지만, 쿼리가 동적으로 길어진다면 Q를 이용하는 것도 나쁜 전략이 아닙니다.

 

 "bye"로 시작하는 것이라고 하였으므로, startswith="bye"를, "bye"로 끝나는 것이라 하였으므로, endswith="bye"로 입력해 주었습니다. Q 쿼리에 요래 넣어서 and로 연결하면, "bye"로 시작하면서, "bye"로 끝나는 포스트를 얻어옵니다.

 

 

 실행 결과는 위와 같습니다.