Query 문법 세 번째 where 절 문자열 조건에 대해서 알려드리겠습니다.
예시 데이터는 2019년 미쉐린 가이드 서울에서 별점 1점~3점을 받은 레스토랑 26곳의 테이블입니다.
SELECT 컬럼명 [WHERE 조건식]
조건을 걸고 싶은 열의 데이터가 문자열 데이터일 경우 크게 4가지 문법으로 검색할 수 있습니다.
또한, 문자열 조건은 반드시 ”(작은따옴표)로 감싸줘야 합니다.
- = ‘○○’
- starts with ‘○○’
- ends with ‘○○’
- contains ‘○○’
1. 완벽히 동일한 데이터 검색에는 = ‘○○’
예시 데이터에서 문자열로 되어 있는 지역(C열) 데이터로 조건을 지정해보겠습니다.
지역(C열)이 ‘중구’인 레스토랑을 검색하고 싶은 경우,
select * where C = ‘중구’
여기서 주의하실 점은 = ‘○○’ 로 지정한 조건과 완벽하게 동일한 데이터만 결과값에 표시합니다.
select * where C = ‘강남’ 으로 입력하면 아무 결과값도 얻을 수 없습니다.
‘강남구’라는 지역은 있지만 ‘강남’이라는 지역은 없기 때문입니다.
2. 특정 문자열로 시작하는 데이터 검색 starts with ‘○○’
만약 ‘강남’처럼 특정 문자열로 시작하는 지역구를 검색하고 싶다면 starts with ‘○○’ 를 사용합니다.
지역(C열)이 ‘강남’으로 시작하는 레스토랑을 검색하고 싶은 경우,
select * where C starts with ‘강남’
3. 특정 문자열로 끝나는 데이터 검색 ends with ‘○○’
반대로 특정 문자열로 끝나는 데이터를 검색하고 싶다면 ends with ‘○○’ 를 사용합니다.
전화번호(D열)이 ‘4447’로 끝나는 레스토랑을 검색하고 싶은 경우,
select * where D ends with ‘4447’
여기에서 전화번호(D열)은 언뜻 숫자로만 이루어져있어서 숫자 데이터처럼 보입니디만, 중간에 ‘-‘ (붙임표)가 포함되어 있기때문에 숫자 데이터가 아니라 문자열 데이터가 됩니다.
4.위치에 관계없이 특정 문자열을 포함하는 데이터 검색 contains ‘○○’
마지막으로 위치 관계없이 특정 문자열이 포함하는 데이터를 검색하고 싶다면 contains ‘○○’ 를 사용합니다.
전화번호(D열)에 ’77’을 포함하는 레스토랑을 검색하고 싶은 경우,
select * where D contains ’77’
레스토랑 이름(A열)에 ‘한식’을 포함하는 레스토랑을 검색하고 싶은 경우,
select * where A contains ‘한식’
샘플 스프레드시트: [QUERY] 2019 미쉐린 가이드 서울 > where 문자열
Query 문법을 더 자세히 알고싶으시다면!
» 스프레드시트 Query 사용법 목차
올려주신 자료를 보고 쿼리문을 잘 이해할 수 있었습니다! 그런데 추가로 궁금한 것이 있어서 여쭤봅니다!
특정셀에서 값을 입력 받으면 작동하는 query문은 어떻게 해야할까요?
=QUERY(test, I16, -1)
이렇게 하고
I16 에서 select * where D = ‘김춘수’ 이렇게 하면
김춘수 값을 다 찾아낼 수 있는데 반대로
A1에다가 “김춘수”라고 적으면 쿼리문이 작동할 수 있도록 말이죠!
“select *where D=’A1′”
“select*where D”=’A1′
등등 여러가지로 시도를 해보다가 이렇게 문의를 드리게 되었습니다!!
좋아요좋아요
질문하신 내용은
구글 스프레드시트 사용법 (8) 데이터 필터링하기
https://smartagent.blog/2018/11/01/spreadsheet08/
에서 “Query함수로 필터링” 내용을 참고하시면 해결하실 수 있습니다.
좋아요좋아요
좋은 글 감사합니다.
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
좋아요좋아요
적어주신 where문은 문제가 없어보입니다. 두 조건중 하나만 맞아도 된다면 or를 사용하는 것이 맞습니다.
혹시 쿼리 구문 앞쪽에 범위가 잘못 지정되어 있지 않은지 확인하시기 바랍니다. A,B열에 조건을 걸고, C열의 값을 가져오는 select문이기때문에 범위에서 최소한 A:C를 지정해줘야 합니다.
좋아요좋아요
답변 감사합니다! 말씀하신대로 데이터값이 오류였습니다 ㅜㅜ
데이터 영역을 고정으로 지정하지 않아서 복붙했더니 다른 영역이 지정된게 문제였습니다…
다시 한번 친절한 답변과 글 감사드립니다.
좋아요좋아요
도움주셔서 감사합니다. 선생님, 같지 않다는 어떻게 표현하나요? 제외하고 싶은 데이터가 있는데 쉽지가 않네요.
좋아요좋아요
<> 를 사용하시면 됩니다.
예를 들어, ‘강남구’를 제외하고 싶다면
select * where C <> ‘강남구’
( <과 >를 붙이는 것인데 댓글에서 잘 표시가 되지 않네요. 아래 링크에서 예시를 확인하시기 바랍니다.)
https://docs.google.com/spreadsheets/d/1pRquS-pJ9W8Q9phZ2Vw1saSQfoGGmAGA3wWzNAEw76s/edit#gid=1715706329&range=F8:I25
좋아요좋아요
안녕하세요. 좋은 글 정말 감사합니다.
스마트 요원님의 글 덕분에 정말 많은 도움을 받았습니다. 한가지 풀리지 않는 의문이 있어 고민 끝에 글을 남깁니다.
현재 QUERY 함수를 이용해서 데이터에서 관련 연도의 자료만 불러올 수 있도록 설정 중에 있습니다. 관련 연도는 별도의 셀을 만들어 셀참조로 수식을 만들고 싶은데, 이것저것 건드려봐도 답이 나오지 않아 답답한 상황입니다 ㅠㅠ
참조에는 2019,2020,2021 연도가 되어 있고, 이 셀 값에 따라 해당 연도의 자료만 불러올 수 있도록 하고 싶습니다. 데이터 시트에 일자가 yyyy-mm-dd로 되어 있는데, 여기서 yyyy = 2019년도만 불러오게 하고 싶은 경우 어떻게 수식을 적용해야 할까요?
쿼리 함수에 대한 지식이 많이 부족한 상황에서 문의글을 드리다보니 글도 다소 두서가 없습니다.. 시트를 첨부드리니 시간적 여유가 있으실 때 도움 좀 부탁드립니다. 항상 감사합니다!
좋아요좋아요
조건문에 year함수를 사용하시면 됩니다.
날짜 데이터가 있는 열이 A열이고, 2021년도만 불러오고 싶다면,
아래처럼 조건을 설정하시면 됩니다.
select * where year(A) = 2021
샘플 스프레드시트: https://docs.google.com/spreadsheets/d/1rKoToav9nt-lxy3XzlWbfr2m7DwO73b-InxyuATCpt0/edit?usp=sharing
좋아요좋아요
스마트요원님. 긴 시간동안 답을 찾지 못했는데 정말 감사합니다.
알려주신대로 설정하니 문제없이 작동을 합니다. 정말 정말 감사합니다.
염치불고하고 한가지 더 질문을 드리고 싶은 것이 있는데,
해당연도를 참조셀을 이용하여 불러오고 싶습니다
오른쪽 상단에 연도 2019~2021 으로 항목을 설정해두었고,
이걸 클릭할 때마다 관련 연도의 정보만 불러오게 하고 싶습니다.
알려주신 것에서 나름대로 응용하여 적용해보았으나 수식이 제대로 작동하지 않아 추가로 도움을 구합니다.
제 아이디를 누르시면 해당 시트로 연결이 되는 것으로 확인됩니다. 바쁘신 와중에 죄송하지만 한번만 더 살펴봐주시면 감사하겠습니다.
좋은 한주~ 월요일 오후 보내세요! 감사합니다.
좋아요좋아요
질문주신 내용은 오른쪽 상단(링크 주신 시트의 Q5셀)에 데이터 > 데이터 확인 메뉴를 이용하여 드롭다운 선택이 가능한 셀로 만드신 후, 해당 셀을 where문안에 넣으시면 됩니다.
query: “select * where year(A)=”&Q5
아래는 관련 포스팅입니다.
구글 스프레드시트 사용법 (8) 데이터 필터링하기
https://smartagent.blog/2018/11/01/spreadsheet08/
에서 “Query함수로 필터링” 내용을 참고하시면 됩니다.
좋아요좋아요
두서 없는 질문에도 친절히 도움 주셔서 감사합니다.
며칠동안의 고민거리가 덕분에 해결 되었습니다 ^^
좋아요좋아요
contains가 특정문자를 포함하는 문자열이잖아요. 혹시 특정문자를 포함하는것만 뺴고 불러 올려면 어떤 걸 써야할까요?ㅠㅠ
좋아요좋아요
NOT을 활용하시면 됩니다.
조건을 걸고싶은 열이 C열이라면,
[예시 SQL]
where * where NOT (C contains ‘문자열’ )
[관련 포스팅]
스프레드시트 Query 사용법 (9) where NOT 조건 설정하기
[샘플 스프레드시트]
https://docs.google.com/spreadsheets/d/1pRquS-pJ9W8Q9phZ2Vw1saSQfoGGmAGA3wWzNAEw76s/edit#gid=638880159
좋아요좋아요
“SELECT Col1,Col2,Col3,Col4,Col14 WHERE Col1 contains ‘”&M2&”‘”
이렇게 했는데요
발주번호를 검색하는데 숫자 발주번호는 잘 검색되고 텍스트포함 발주번호는 검색이 안됩니다.. 무엇때문일까요? 블로그 글 보고 많은 도움을 받고 있습니다.
ㅠㅠ
좋아요좋아요
음.. 숫자와 문자열을 섞어서 테스트 해봤습니다만, 잘 검색 됩니다.
뭔가 다른 이유가 있지 않을까 합니다.
https://docs.google.com/spreadsheets/d/1pRquS-pJ9W8Q9phZ2Vw1saSQfoGGmAGA3wWzNAEw76s/edit#gid=390933881
좋아요좋아요
정말 많은 도움 받았습니다! 최고 *_*
좋아요좋아요