스프레드시트 Query 사용법 (3) where 문자열 조건

Query 문법 세 번째 where 절 문자열 조건에 대해서 알려드리겠습니다.

예시 데이터는 2019년 미쉐린 가이드 서울에서 별점 1점~3점을 받은 레스토랑 26곳의 테이블입니다.

query_where_table

 SELECT 컬럼명 [WHERE 조건식]

조건을 걸고 싶은 열의 데이터가 문자열 데이터일 경우 크게 4가지 문법으로 검색할 수 있습니다.
또한, 문자열 조건은 반드시 ”(작은따옴표)로 감싸줘야 합니다.

  1.  = ‘○○’
  2. starts with ‘○○’
  3. ends with ‘○○’
  4. contains ‘○○’

 

1. 완벽히 동일한 데이터 검색에는 = ‘○○’

예시 데이터에서 문자열로 되어 있는 지역(C열) 데이터로 조건을 지정해보겠습니다.

지역(C열)이 ‘중구’인 레스토랑을 검색하고 싶은 경우,
select * where C = ‘중구’where_text_07

여기서 주의하실 점은 = ‘○○’ 로 지정한 조건과 완벽하게 동일한 데이터만 결과값에 표시합니다.

select * where C = ‘강남’ 으로 입력하면 아무 결과값도 얻을 수 없습니다.
‘강남구’라는 지역은 있지만 ‘강남’이라는 지역은 없기 때문입니다.where_text_01

2. 특정 문자열로 시작하는 데이터 검색 starts with ‘○○’

만약 ‘강남’처럼 특정 문자열로 시작하는 지역구를 검색하고 싶다면 starts with ‘○○’ 를 사용합니다.

지역(C열)이 ‘강남’으로 시작하는 레스토랑을 검색하고 싶은 경우,
select * where C starts with ‘강남’where_text_02

3. 특정 문자열로 끝나는 데이터 검색 ends with ‘○○’

반대로 특정 문자열로 끝나는 데이터를 검색하고 싶다면 ends with ‘○○’ 를 사용합니다.

전화번호(D열)이 ‘4447’로 끝나는 레스토랑을 검색하고 싶은 경우,
select * where D ends with ‘4447’where_text_04

여기에서 전화번호(D열)은 언뜻 숫자로만 이루어져있어서 숫자 데이터처럼 보입니디만, 중간에 ‘-‘ (붙임표)가 포함되어 있기때문에 숫자 데이터가 아니라 문자열 데이터가 됩니다.

4.위치에 관계없이 특정 문자열을 포함하는 데이터 검색 contains ‘○○’

마지막으로 위치 관계없이 특정 문자열이 포함하는 데이터를 검색하고 싶다면 contains ‘○○’ 를 사용합니다.

전화번호(D열)에 ’77’을 포함하는 레스토랑을 검색하고 싶은 경우,
select * where D contains ’77’where_text_05

레스토랑 이름(A열)에 ‘한식’을 포함하는 레스토랑을 검색하고 싶은 경우,
select * where A contains ‘한식’where_text_06

샘플 스프레드시트: [QUERY] 2019 미쉐린 가이드 서울 > where 문자열


Query 문법을 더 자세히 알고싶으시다면!
» 스프레드시트 Query 사용법 목차

17 Replies to “스프레드시트 Query 사용법 (3) where 문자열 조건”

  1. 올려주신 자료를 보고 쿼리문을 잘 이해할 수 있었습니다! 그런데 추가로 궁금한 것이 있어서 여쭤봅니다!
    특정셀에서 값을 입력 받으면 작동하는 query문은 어떻게 해야할까요?

    =QUERY(test, I16, -1)
    이렇게 하고
    I16 에서 select * where D = ‘김춘수’ 이렇게 하면
    김춘수 값을 다 찾아낼 수 있는데 반대로

    A1에다가 “김춘수”라고 적으면 쿼리문이 작동할 수 있도록 말이죠!
    “select *where D=’A1′”
    “select*where D”=’A1′

    등등 여러가지로 시도를 해보다가 이렇게 문의를 드리게 되었습니다!!

    좋아요

  2. 좋은 글 감사합니다.

    where 문에서 컬럼 a 나 b 중 contain 되는 값이 있으면 select 해주는 경우는 어떻게 해야 할까요?

    select C where A contains ‘값’ or B contains ‘값’ 식으로 만들고 싶은데,
    or 위치가 잘못된건지 괄호를 쳐보고 해도 오류가 납니다 ㅜㅜ

    구글 쿼리 문법에선 or나 and 예시는 아래와 같은 단순 조건연산자로만 되어있던데, 혹시 contains 연산자는 or 가 사용이 안되는건가요?

    where (dept’Eng’ and isSenior=true) or (dept=’Sales’) or seniorityStartTime is null

    좋아요

    1. 적어주신 where문은 문제가 없어보입니다. 두 조건중 하나만 맞아도 된다면 or를 사용하는 것이 맞습니다.
      혹시 쿼리 구문 앞쪽에 범위가 잘못 지정되어 있지 않은지 확인하시기 바랍니다. A,B열에 조건을 걸고, C열의 값을 가져오는 select문이기때문에 범위에서 최소한 A:C를 지정해줘야 합니다.

      좋아요

      1. 답변 감사합니다! 말씀하신대로 데이터값이 오류였습니다 ㅜㅜ
        데이터 영역을 고정으로 지정하지 않아서 복붙했더니 다른 영역이 지정된게 문제였습니다…

        다시 한번 친절한 답변과 글 감사드립니다.

        좋아요

  3. 도움주셔서 감사합니다. 선생님, 같지 않다는 어떻게 표현하나요? 제외하고 싶은 데이터가 있는데 쉽지가 않네요.

    좋아요

  4. 안녕하세요. 좋은 글 정말 감사합니다.

    스마트 요원님의 글 덕분에 정말 많은 도움을 받았습니다. 한가지 풀리지 않는 의문이 있어 고민 끝에 글을 남깁니다.

    현재 QUERY 함수를 이용해서 데이터에서 관련 연도의 자료만 불러올 수 있도록 설정 중에 있습니다. 관련 연도는 별도의 셀을 만들어 셀참조로 수식을 만들고 싶은데, 이것저것 건드려봐도 답이 나오지 않아 답답한 상황입니다 ㅠㅠ

    참조에는 2019,2020,2021 연도가 되어 있고, 이 셀 값에 따라 해당 연도의 자료만 불러올 수 있도록 하고 싶습니다. 데이터 시트에 일자가 yyyy-mm-dd로 되어 있는데, 여기서 yyyy = 2019년도만 불러오게 하고 싶은 경우 어떻게 수식을 적용해야 할까요?

    쿼리 함수에 대한 지식이 많이 부족한 상황에서 문의글을 드리다보니 글도 다소 두서가 없습니다.. 시트를 첨부드리니 시간적 여유가 있으실 때 도움 좀 부탁드립니다. 항상 감사합니다!

    좋아요

  5. 스마트요원님. 긴 시간동안 답을 찾지 못했는데 정말 감사합니다.
    알려주신대로 설정하니 문제없이 작동을 합니다. 정말 정말 감사합니다.

    염치불고하고 한가지 더 질문을 드리고 싶은 것이 있는데,
    해당연도를 참조셀을 이용하여 불러오고 싶습니다
    오른쪽 상단에 연도 2019~2021 으로 항목을 설정해두었고,
    이걸 클릭할 때마다 관련 연도의 정보만 불러오게 하고 싶습니다.

    알려주신 것에서 나름대로 응용하여 적용해보았으나 수식이 제대로 작동하지 않아 추가로 도움을 구합니다.

    제 아이디를 누르시면 해당 시트로 연결이 되는 것으로 확인됩니다. 바쁘신 와중에 죄송하지만 한번만 더 살펴봐주시면 감사하겠습니다.

    좋은 한주~ 월요일 오후 보내세요! 감사합니다.

    좋아요

    1. 질문주신 내용은 오른쪽 상단(링크 주신 시트의 Q5셀)에 데이터 > 데이터 확인 메뉴를 이용하여 드롭다운 선택이 가능한 셀로 만드신 후, 해당 셀을 where문안에 넣으시면 됩니다.

      query: “select * where year(A)=”&Q5

      아래는 관련 포스팅입니다.

      구글 스프레드시트 사용법 (8) 데이터 필터링하기

      구글 스프레드시트 사용법 (8) 데이터 필터링하기


      에서 “Query함수로 필터링” 내용을 참고하시면 됩니다.

      좋아요

  6. contains가 특정문자를 포함하는 문자열이잖아요. 혹시 특정문자를 포함하는것만 뺴고 불러 올려면 어떤 걸 써야할까요?ㅠㅠ

    좋아요

    1. NOT을 활용하시면 됩니다.
      조건을 걸고싶은 열이 C열이라면,
      [예시 SQL]
      where * where NOT (C contains ‘문자열’ )

      [관련 포스팅]
      스프레드시트 Query 사용법 (9) where NOT 조건 설정하기

      스프레드시트 Query 사용법 (9) where NOT 조건 설정하기

      [샘플 스프레드시트]
      https://docs.google.com/spreadsheets/d/1pRquS-pJ9W8Q9phZ2Vw1saSQfoGGmAGA3wWzNAEw76s/edit#gid=638880159

      좋아요

  7. “SELECT Col1,Col2,Col3,Col4,Col14 WHERE Col1 contains ‘”&M2&”‘”
    이렇게 했는데요
    발주번호를 검색하는데 숫자 발주번호는 잘 검색되고 텍스트포함 발주번호는 검색이 안됩니다.. 무엇때문일까요? 블로그 글 보고 많은 도움을 받고 있습니다.
    ㅠㅠ

    좋아요

댓글 남기기