方格精選

QUERY 函式大解析(二):WHERE

更新 發佈閱讀 12 分鐘

嘿,大家好!我是喜特先生,Mr. Sheet。不知道大家的 SELECT 用得如何?

這是 QUERY 函式大解析系列文章的第二篇,建議你先看過第一篇 QUERY 函式的原理和 SELECT 並實際練習操作後,再來看這篇文章唷!(延伸閱讀: QUERY 函式大解析(一):基本原理與 SELECT

我們上次聊到了怎麼用 SELECT 選取整個資料範圍和特定欄位,這次我們要來介紹怎麼用 WHERE 來更進一步指定搜尋條件,回傳符合條件的資料

我在方格子上寫了一系列使用 QUERY 的教學文章,也歡迎你來看看:

QUERY 函式大解析,系列文索引

我們來看看究竟這個 WHERE 是什麼,還有為什麼這麼實用吧!


WHERE 是什麼

「當符合某條件的時候,回傳資料」的意思。WHERE 語法可以指定搜尋條件,要 QUERY 只回傳符合條件的資料。所謂的「條件」可以分成下列幾種:

raw-image

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 = ###...")


現在是練習時間!

打開試算表、複製後,你會看到一份名單。

raw-image

每一個欄位的資料類型都是文字,所以我們稍後的搜尋都要記得用單引號括起來。來出幾個題目:

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

我們先把剛剛的結構搬出來看一下:

=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 鍵:

raw-image

你可能也注意到這個搜尋結果沒有標題列吧?如果你需要標題的話,可以在 QUERY 的最後一個參數那邊打上一個 1,告訴 QUERY 我這邊有一列標題。語法像是這樣:

=QUERY('資料'!A:E, "SELECT * WHERE C = '女'", 1)
raw-image

雖然我們前面提到「標題」這個參數可以省略,QUERY 可以偵測資料是否含有標題列,但好像對中文的資料不是太有效,建議還是可以加上 1 來確保搜尋結果安全無虞。


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

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

=QUERY('資料'!A:E, "SELECT * WHERE A starts with '林'", 1)
raw-image


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

再來我們就來試試看用邏輯運算子,用 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)

執行結果就會像是這個樣子:

raw-image

讀到這裡,大家辛苦了!到目前為止我們已經學到了怎麼用 WHERE 來限制搜尋條件,進一步篩選出想要的結果。到這邊其實已經學會了 QUERY 的一大部分,多多習慣 WHERE、就可以很有效率地在茫茫大海裡面找到資料。

如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!

想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
喜特先生官方沙龍
21.2K會員
158內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
Thumbnail
在用 QUERY 查詢資料時,你曾遇過在 WHERE 寫很多個 OR 的狀況嗎?有個更簡單好用的寫法推薦給你,來瞧瞧!
Thumbnail
在用 QUERY 查詢資料時,你曾遇過在 WHERE 寫很多個 OR 的狀況嗎?有個更簡單好用的寫法推薦給你,來瞧瞧!
Thumbnail
多條件查詢 AND運算子 SELECT *​ FROM your_table_name WHERE column1 LIKE '_value1%' AND column2 = number​2 OR運算子 SELECT *​ FROM your_table_name WHERE colu
Thumbnail
多條件查詢 AND運算子 SELECT *​ FROM your_table_name WHERE column1 LIKE '_value1%' AND column2 = number​2 OR運算子 SELECT *​ FROM your_table_name WHERE colu
Thumbnail
查詢範圍 指定欄位 SELECT column1, column2, column3,... FROM your_table_name 不重複欄位 SELECT DISTINCT column1 FROM your_table_name 欄位別名 SELECT column1 A
Thumbnail
查詢範圍 指定欄位 SELECT column1, column2, column3,... FROM your_table_name 不重複欄位 SELECT DISTINCT column1 FROM your_table_name 欄位別名 SELECT column1 A
Thumbnail
要怎麼無視大小寫,用 QUERY 抓取資料呢?方法其實很簡單,一起看下去吧!
Thumbnail
要怎麼無視大小寫,用 QUERY 抓取資料呢?方法其實很簡單,一起看下去吧!
Thumbnail
連 Google QUERY 官方文件都沒寫的秘密,在這邊公開啦!如果你想提升處理大型資料庫的清理或分析效率,歡迎來參考「SKIPPING」!
Thumbnail
連 Google QUERY 官方文件都沒寫的秘密,在這邊公開啦!如果你想提升處理大型資料庫的清理或分析效率,歡迎來參考「SKIPPING」!
Thumbnail
你知道 SELECT 除了回傳欄位、使用聚集函數外,還可以更進一步做加減乘除喔!這個系列是 QUERY 函式大解析的第六篇文章,如果還不知道什麼是 QUERY 的話,我還是很建議你從第一篇慢慢看、跟著我們的練習實際操作,就會更有概念囉~
Thumbnail
你知道 SELECT 除了回傳欄位、使用聚集函數外,還可以更進一步做加減乘除喔!這個系列是 QUERY 函式大解析的第六篇文章,如果還不知道什麼是 QUERY 的話,我還是很建議你從第一篇慢慢看、跟著我們的練習實際操作,就會更有概念囉~
Thumbnail
今天要介紹的是進階的 SELECT 功能,可以即時對 QUERY 的結果運算,迅速取得數值的平均、總和、最大值、最小值和數量,省去拉資料透視表(pivot table)的麻煩!
Thumbnail
今天要介紹的是進階的 SELECT 功能,可以即時對 QUERY 的結果運算,迅速取得數值的平均、總和、最大值、最小值和數量,省去拉資料透視表(pivot table)的麻煩!
Thumbnail
除了 SELECT、WHERE 之外,今天再介紹 ORDER BY、LIMIT、OFFSET 和 LABEL 給大家,讓你的 QUERY 更強大!
Thumbnail
除了 SELECT、WHERE 之外,今天再介紹 ORDER BY、LIMIT、OFFSET 和 LABEL 給大家,讓你的 QUERY 更強大!
Thumbnail
這是 QUERY 函式大解析系列文章的第二篇!我們要用 WHERE 語法來指定搜尋條件,要 QUERY 只回傳符合條件的資料。
Thumbnail
這是 QUERY 函式大解析系列文章的第二篇!我們要用 WHERE 語法來指定搜尋條件,要 QUERY 只回傳符合條件的資料。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News