方格精選

QUERY 函式大解析(二):WHERE

閱讀時間約 12 分鐘
嘿,大家好!我是喜特先生,Mr. Sheet。不知道大家的 SELECT 用得如何?
這是 QUERY 函式大解析系列文章的第二篇,建議你先看過第一篇 QUERY 函式的原理和 SELECT 並實際練習操作後,再來看這篇文章唷!(延伸閱讀: QUERY 函式大解析(一):基本原理與 SELECT
我們上次聊到了怎麼用 SELECT 選取整個資料範圍和特定欄位,這次我們要來介紹怎麼用 WHERE 來更進一步指定搜尋條件,回傳符合條件的資料
我在方格子上寫了一系列使用 QUERY 的教學文章,也歡迎你來看看:
我們來看看究竟這個 WHERE 是什麼,還有為什麼這麼實用吧!

WHERE 是什麼

「當符合某條件的時候,回傳資料」的意思。WHERE 語法可以指定搜尋條件,要 QUERY 只回傳符合條件的資料。所謂的「條件」可以分成下列幾種:
WHERE 可以讓你對「欄」指定搜尋條件,不是「列」喔!WHERE 會去搜尋欄裡面相符指定條件的資訊,並回傳結果。
接下來會針對每個條件類型,來講解怎麼用、什麼時候用。

比較運算子

= 等於
「這欄等於 ### 的值都回傳給我吧」
的意思。可以用來等於數值或是文字。記得如果要做文字的處理,要放上「單引號」(因為我們的 QUERY 語法本身就帶有雙引號、再用雙引號會產生錯誤)!
WHERE A = 100
WHERE B = '喜特先生'
WHERE C = 'abc'
!=、<> 不等於
「這欄不等於 ### 的值都回傳給我吧」
。兩個寫法(!=、<>)都可以,可以用來不等於數值或是文字。
WHERE A != 100
WHERE B != '喜特先生'
WHERE C <> 'abc'
>、<、>=、<= 大於、小於、大於等於、小於等於
「這欄__於 ### 的值都回傳給我吧」
的意思。
WHERE A > 100
WHERE B <= 50
WHERE C < 1000

空值

is null 為空值
「這欄裡面只要儲存格是空值的資料都回傳給我吧」
的意思。
WHERE A is null
is not null 不為空值
「這欄裏面只要儲存格不是空值的資料都回傳給我吧」
。通常會用在過濾掉空的儲存格的資料,很方便的語法。
WHERE B is not null

文字搜尋

要先注意,如果你要搜尋的資料是英文的話,大小寫有差!在做搜尋的時候可以先看一下原本的資料是怎麼寫的,再進行 QUERY。
contains 含有…的文字
「這欄含有 ### 的文字的資料都回傳給我吧」
的意思。只要含有特定字元,就會回傳結果。
WHERE A contains '喜特先生'
例如說你想找資料欄裡含有「育」的資料,你會得到「私立才國小」、「市立德國小」、「市立英國小」等等含有「育」字的結果。
舉個英文大小寫要注意的例子:例如你想找 John,「John Adams」、「Long John Silver」會列入結果,但「john adams」不會被算在裡面,因為 john 的 j 不是大寫。
starts with 以…開始的文字
「這欄以 ### 為開始的文字的資料都回傳吧!」
的意思。
WHERE B starts with '喜'
如搜尋以「市立」開始的資料,就會得到「市立北大國小」、「市立新林國小」、「市立板橋國小」等等以「市立」開始的結果。如果是英文的話邏輯也一樣,搜尋以「e」開始的資料,會得到「engineering」、「eng」、「eat」等等。
ends with 以…結束的文字
「這欄以 ### 為結束的文字的資料都回傳吧!」
的意思。
WHERE C ends with '生'
像是搜尋以「777」為結尾的資料,就會得到「(02)…777」、「(03)…777」的結果。英文也是,搜尋以「y」結尾的資料,會得到「cowboy」、「boy」、「my」等等的結果。
其他還有兩個我們沒介紹,是更進階的 matches 還有 like 。它們可以做更細緻的搜尋,但礙於篇幅我們之後再講解講解了。

邏輯運算子

假想你今天在新聞看到,你最愛的老婆們終於要來台灣開握手會:
「我想去新垣結衣的握手會」
「我想去吉岡里帆的握手會」
但如果可以的話,「小孩子才做選擇,我全都要嘛!」所以你開始思考達成兩樣條件的可能性。
我們把「前往結衣的握手會」當成一個條件,「前往吉岡的握手會」當另一個條件,得到的可能性就是我們的 QUERY 結果。
我們就以這個打比方,來解釋 QUERY 裡支援的三個邏輯運算子。
AND 且 — 「小孩子才做選擇,我兩場握手會全都要去!」
「把同時符合條件 A 和條件 B 的結果都傳給我吧」的意思。
WHERE A 條件 AND B 條件
WHERE A = '新垣結衣' AND B = '吉岡里帆'
如果今天有三個或更多的條件,你也可以用 And 串連起來,也就是「把同時符合條件 A、條件 B、條件 C⋯條件 N 的值都給我吧」的意思。
OR 或 — 「好吧,我只能去其中一個,但是不管去哪一個,我就很滿意了」
「把符合任何條件資料都傳給我吧!」的意思。
WHERE A 條件 OR B 條件
WHERE A = '新垣結衣' OR B = '吉岡里帆'
同理可證,三個以上的條件時,也是「把符合條件 A、或條件 B、或條件 C ⋯或條件 N 的資料都傳給我吧!」的意思。
NOT 不反轉自己設定的條件
「把不符合這個條件的資料都傳給我吧!」的意思。
WHERE NOT A 條件
WHERE NOT A 條件 AND NOT B 條件
切記要把 NOT 寫在條件前面否定才會生效!
當然如果覺得太麻煩,也可以適度用剛剛介紹到的「is not null」、「<>」、「!=」來達成你的搜尋。
你也可以用這些邏輯運算子做出不同排列組合:
符合 A 是新垣結衣且 B 是吉岡里帆、但 C 不是有村架純:
WHERE A = '新垣結衣' AND B = '吉岡里帆' AND NOT C = '有村架純'
如果你有多個條件,也可以用括號()讓 QUERY 知道你要優先執行這個條件,像是:
WHERE (A = '新垣結衣' AND B = '吉岡里帆') OR C = '有村架純'
再加上前面的比較運算子、文字搜尋和空值的運用,你可以篩選出不少資訊了!

WHERE 語法怎麼寫?

寫在 SELECT 後面就可以了。也就是:
=QUERY(資料, "SELECT ... WHERE ...")
如果有很多搜尋條件、用邏輯運算子串連,你可以這樣寫(以 AND 為例):
=QUERY(資料, "SELECT ...
WHERE A = ###
AND B = ###
AND C = ###...")

現在是練習時間!

打開試算表、複製後,你會看到一份名單。
(免責聲明:這個名單上面的資訊都是用各種不同的生成器做出來的,如有雷同,真的是巧合)
每一個欄位的資料類型都是文字,所以我們稍後的搜尋都要記得用單引號括起來。來出幾個題目:

一、搜尋所有性別是女性的資料

我們先把剛剛的結構搬出來看一下:
=QUERY(資料, "SELECT ... WHERE ...")
資料:無庸置疑,我們的資料範圍很明顯就是這個名單的 A 欄到 E 欄了。
語法:我們要全部的欄位,就用 SELECT * 把全部的欄位包起來。再來就是 WHERE 的條件,我們要找性別(C欄)是「女」的資訊。
條件:用等於(=)就可以解決了!
那我們就回到 QUERY 的試算表,寫下 =QUERY 後,定義資料的範圍:
=QUERY('資料'!A:E
再來打個逗點,寫下 SELECT 的欄位有什麼:
=QUERY('資料'!A:E, "SELECT *
最後就是 WHERE!空一格,來指定一下條件:C 欄等於「女」。別忘了把「女」這個字符用單引號括起來:
=QUERY('資料'!A:E,"SELECT * WHERE C = '女'")
痛快按下 Enter 鍵:
你可能也注意到這個搜尋結果沒有標題列吧?如果你需要標題的話,可以在 QUERY 的最後一個參數那邊打上一個 1,告訴 QUERY 我這邊有一列標題。語法像是這樣:
=QUERY('資料'!A:E, "SELECT * WHERE C = '女'", 1)
雖然我們前面提到「標題」這個參數可以省略,QUERY 可以偵測資料是否含有標題列,但好像對中文的資料不是太有效,建議還是可以加上 1 來確保搜尋結果安全無虞。

二、搜尋所有姓氏是「林」的人員資料

我們的資料範圍不變,SELECT 的範圍也不變,只需要考慮 WHERE 怎麼寫就行了!中文的姓氏是姓名的第一個字,我覺得用「以…開始」的 starts with 應該滿適合的:
=QUERY('資料'!A:E, "SELECT * WHERE A starts with '林'", 1)

三、搜尋所有姓氏是「李」且性別是「女」的人員資料

再來我們就來試試看用邏輯運算子,用 and 來連接兩個條件。
這邊的條件A是「姓氏是李」、條件B是「性別是女」。我們要找同時符合兩個條件(也就是「且」)的話,會用到 and。如果你還不太確定條件A跟條件B怎麼寫的話,就是:
姓氏是李:WHERE A starts with '李'
性別是女:WHERE C = '女'
接下來我們把兩個條件結合起來,就會變成:
WHERE A starts with '李' and WHERE C = '女'
但這邊的 WHERE 寫了兩次,我們只需要寫一次即可。也就是:
WHERE A starts with '李' and C = '女'
這樣就行了!接下來就把前面的資料範圍、還有 SELECT、指定標題列寫好的話,就會像是這樣:
=query('資料'!A:E, "SELECT *
WHERE A starts with '李' and C = '女'",1)
執行結果就會像是這個樣子:

讀到這裡,大家辛苦了!到目前為止我們已經學到了怎麼用 WHERE 來限制搜尋條件,進一步篩選出想要的結果。到這邊其實已經學會了 QUERY 的一大部分,多多習慣 WHERE、就可以很有效率地在茫茫大海裡面找到資料。
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!
12.1K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
QUERY,一個真的要隆重介紹的函式,真的很好用。一起從頭開始學這個強力的函式吧!
QUERY,一個真的要隆重介紹的函式,真的很好用。一起從頭開始學這個強力的函式吧!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
條件資料行是POWER QUERY裡面一個可以設定指定條件,進而判斷符合條件的資料產生指定的內容,就跟EXCEL中的IF函數很像。 但是POWER QUERY的條件資料行,他是利用對話式的視窗,所以不需要自己動手寫函數,就可以順利達到相同的功能。 今天就用1個資料3個題目來學習這個功能
Thumbnail
日前在LINE社群,有網友提出一個問題,要把資料進行分析,用日期來計算出將對應的資料。 原始資料,密密麻麻的數據,都看不清楚了 放大一點點 要把這些資料不同『料號』的各種『狀態』依據『日期』進行分析。 有興趣可以下載試著挑戰看看:檔案下載 作法有很多種,當然也可以用函數處
Thumbnail
網友提問的一個問題,這個問題其實也蠻常見,資料中相同日期的項目全部合併到同一個儲存格中,來簡化資料的顯示。 這邊分享三種作法,通用的函數法、365函數法、POWER QUERY法 💡通用函數法 通用版本的函數需要輔助欄才可以達成這個需求 輔助欄C2=VLOOKUP(A2,A2:B10,
Media query可以很複雜,但是這裡KP只談最簡單、最實用的基礎。
Thumbnail
粉絲提問需求 儲存格中這一段字串:baseccy=usd,baseccyamoun=1300,type=short} 要如何把字串中1300的數字給抓出來,其實方式蠻多的,今天來介紹3種方式 第一種剖析法: 先將資料選取出來之後利用資料剖析,因為資料的規則數字是在=之後與逗號之前,所以可以先將逗號剖
Thumbnail
不得不說仁川機場的機場本體建築設計很有設計感,大韓航空跟韓亞航的主場都在仁川機場,尤其是大韓航空KOREAN AIR,在其官網上寫著韓國第一的航空公司,多麼自信的口號,讓人想像著充滿設計感的韓國第一的航空公司貴賓室應該有一些驚艷旅客的設計吧。實際上,到了貴賓室的感覺是驚嚇,因為好像來到東南亞的某個不
Thumbnail
如果你正在學習SQL,這邊介紹一個方便簡易的方式,不須透過安裝傳統的MySQL,只要利用Google提供的BigQuery開源示範dataset就可以實作練習,另一方面,如果你想應用自己手邊上的資料,也能簡單的使用匯入功能(如何匯入看這邊)。 輸入名稱「data-to-insights」。
Thumbnail
在【刁民國】一定要買房,不然就會變成「社會邊緣倫」,與財富重分配絕緣,而且你一定要買「會賺錢」的房子,那種拿來【遮風避雨】的房子,求求你千萬不要買,不如租房子,剩下錢出國旅遊,充實自己總比住在【財務地獄】好。 在這個【刁民寶島】,拿房地產來抵抗通貨膨脹?~就你腦袋進水信這套~有錢人當然為了賺大錢。
Thumbnail
又到了愉悅的蕾蕾週五影院 而且是連續假期的週五,真是太令人開心了👏🎉 週五電影-旅遊篇暫時告一段落 上週看完金鐘獎,決定要來開啟台灣篇 好好的介紹一下台灣優秀的影劇們 (Netflix前三都是韓片有點Sad🥲)   第一部就獻給本次得獎的大債時代。 Netflix 上面有哦  
Thumbnail
※劇透 這篇文章盡可能解析女主角昭容王妃、男主角哲宗皇帝以及男神張奉煥三人的角色關係與變化,內容較多還請大家耐心看完。情感的導師、扶持的戰友、陪伴的摯友、曖昧的情人、牽掛的靈魂,這些身分都是在《哲仁王后》中一位身兼多職的角色,沒錯,就是....
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
條件資料行是POWER QUERY裡面一個可以設定指定條件,進而判斷符合條件的資料產生指定的內容,就跟EXCEL中的IF函數很像。 但是POWER QUERY的條件資料行,他是利用對話式的視窗,所以不需要自己動手寫函數,就可以順利達到相同的功能。 今天就用1個資料3個題目來學習這個功能
Thumbnail
日前在LINE社群,有網友提出一個問題,要把資料進行分析,用日期來計算出將對應的資料。 原始資料,密密麻麻的數據,都看不清楚了 放大一點點 要把這些資料不同『料號』的各種『狀態』依據『日期』進行分析。 有興趣可以下載試著挑戰看看:檔案下載 作法有很多種,當然也可以用函數處
Thumbnail
網友提問的一個問題,這個問題其實也蠻常見,資料中相同日期的項目全部合併到同一個儲存格中,來簡化資料的顯示。 這邊分享三種作法,通用的函數法、365函數法、POWER QUERY法 💡通用函數法 通用版本的函數需要輔助欄才可以達成這個需求 輔助欄C2=VLOOKUP(A2,A2:B10,
Media query可以很複雜,但是這裡KP只談最簡單、最實用的基礎。
Thumbnail
粉絲提問需求 儲存格中這一段字串:baseccy=usd,baseccyamoun=1300,type=short} 要如何把字串中1300的數字給抓出來,其實方式蠻多的,今天來介紹3種方式 第一種剖析法: 先將資料選取出來之後利用資料剖析,因為資料的規則數字是在=之後與逗號之前,所以可以先將逗號剖
Thumbnail
不得不說仁川機場的機場本體建築設計很有設計感,大韓航空跟韓亞航的主場都在仁川機場,尤其是大韓航空KOREAN AIR,在其官網上寫著韓國第一的航空公司,多麼自信的口號,讓人想像著充滿設計感的韓國第一的航空公司貴賓室應該有一些驚艷旅客的設計吧。實際上,到了貴賓室的感覺是驚嚇,因為好像來到東南亞的某個不
Thumbnail
如果你正在學習SQL,這邊介紹一個方便簡易的方式,不須透過安裝傳統的MySQL,只要利用Google提供的BigQuery開源示範dataset就可以實作練習,另一方面,如果你想應用自己手邊上的資料,也能簡單的使用匯入功能(如何匯入看這邊)。 輸入名稱「data-to-insights」。
Thumbnail
在【刁民國】一定要買房,不然就會變成「社會邊緣倫」,與財富重分配絕緣,而且你一定要買「會賺錢」的房子,那種拿來【遮風避雨】的房子,求求你千萬不要買,不如租房子,剩下錢出國旅遊,充實自己總比住在【財務地獄】好。 在這個【刁民寶島】,拿房地產來抵抗通貨膨脹?~就你腦袋進水信這套~有錢人當然為了賺大錢。
Thumbnail
又到了愉悅的蕾蕾週五影院 而且是連續假期的週五,真是太令人開心了👏🎉 週五電影-旅遊篇暫時告一段落 上週看完金鐘獎,決定要來開啟台灣篇 好好的介紹一下台灣優秀的影劇們 (Netflix前三都是韓片有點Sad🥲)   第一部就獻給本次得獎的大債時代。 Netflix 上面有哦  
Thumbnail
※劇透 這篇文章盡可能解析女主角昭容王妃、男主角哲宗皇帝以及男神張奉煥三人的角色關係與變化,內容較多還請大家耐心看完。情感的導師、扶持的戰友、陪伴的摯友、曖昧的情人、牽掛的靈魂,這些身分都是在《哲仁王后》中一位身兼多職的角色,沒錯,就是....