스프레드시트 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) 데이터 필터링하기
      https://smartagent.blog/2018/11/01/spreadsheet08/
      에서 “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&”‘”
    이렇게 했는데요
    발주번호를 검색하는데 숫자 발주번호는 잘 검색되고 텍스트포함 발주번호는 검색이 안됩니다.. 무엇때문일까요? 블로그 글 보고 많은 도움을 받고 있습니다.
    ㅠㅠ

    좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중