方格精選

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
留言分享你的想法!
喜特先生 Mr. Sheet -avatar-img
發文者
2024/02/15
喜特先生 Mr. Sheet -avatar-img
發文者
2024/01/30
QUERY 函式大解析,系列文索引提及了這篇文章,趕快過去看看吧!
喜特先生 Mr. Sheet -avatar-img
發文者
2023/10/17
篩選器,梳理資料靠這個!提及了這篇文章,趕快過去看看吧!
avatar-img
喜特先生官方沙龍
19.8K會員
153內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 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
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 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 更強大!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News